什么是桥接模式?
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
有什么优点吗?
抽象与实现分离,扩展能力强
符合开闭原则
符合合成复用原则
其实现细节对客户透明
有什么缺点吗?
会增加系统的理解与设计难度。由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程
代码展示
①、桥接模式
Implementor类
abstract class Implementor { public abstract void Operation(); }
ConcreteImplementorA和ConcreteImplementorA等派生类
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(); //调用Operation方法 } }
RefinedAbstraction类
class RefinedAbstraction:Abstraction { public override void Operation() { implementor.Operation(); } }
客户端
Abstraction ab = new RefinedAbstraction(); //实例化 ab.SetImplementor(new ConcreteImplementorA()); ab.Operation(); ab.SetImplementor(new ConcreteImplementorB()); ab.Operation(); Console.ReadKey();