桥接模式

手机软件代码结构

桥接模式 - Bridge_ide

手机软件的代码实现
手机软件抽象类
abstract clsss HandsetSoft
{
public abstract void Run();
}
游戏,通讯录等具体类
//手机游戏
class HandsetGame : HandsetSoft
{
public override void Run()
{
Console.WriteLine("运行手机游戏");
}
}
//手机通讯录
class HandsetAddressList : HandsetSoft
{
public override void Run()
{
Console.WriteLine("运行手机通讯录");
}
}手机品牌类
abstract class HandsetBrand
{
protected HandsetSoft soft; //设置手机软件
public void SetHandsetSoft(HandsetSoft soft)
{
this.soft = soft;
}
public abstract void Run();
}
品牌N,品牌M具体类
class HandsetBrandN : HandsetBrand
{
public override void Run()
{
soft.Run();
}
}
---客户端代码---
static void Main(string[] args)
{
HandsetBrand ab;
ab = new HandsetBrandN(); ab.SetHandsetSoft(new HandsetGame());
ab.Run();

ab.SetHandsetSoft(new HandsetAddressList());
ab.Run(); ab = new HandsetBrandM();
ab.SetHandsetSoft(new HandsetGame());
ab.Run();

ab.SetHandsetSoft(new HandsetAddressList());
ab.Run();

Console.Read();
}

桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。

桥接模式结构图:

桥接模式 - Bridge_ide_02


Implementor类
abstract class Implementor
{
public abstract void Operation();
}
class ConcreteImplementorA : Implementor
{
public override void Operation()
{
Console.WriteLine("具体实现A的方法执行");
}
}
class ConcreteImplementorB : Implementor
{
public override void Operation()
{
Console.WriteLine("具体实现B的方法执行");
}
}Abstraction类
class Abstraction
{
protected Implementor implementor;
public void SetImplementor(Implementor implementor)
{
this.implementor = implementor; }
public virtual void Operation()
{
implementor.Operation();
}
}class RefinedAbstraction : Abstraction
{
public override void Operation()
{
implementor.Operation();
}
}---客户端代码---
static void Main(string[] args)
{
Abstraction ab = new RefinedAbstraction();

ab.SetImplementor(new ConcreteImplementorA());
ab.Operation();

ab.SetImplementor(new ConcreteImplementorB());
ab.Operation(); Console.Read();
}实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。