设计模式--桥接模式
概念
将抽象和现实解耦,是的两者可以独立的变化。
使用场景
- 不希望或不适用使用继承的场景
- 接口或抽象类不稳定的场景
- 重用性要求较高的场景
何时使用
实现系统可能有多个角度分类,每一种角度都可能变化。
优点
-
抽象和现实的分离
-
扩展能力好
接口允许进行扩展 -
实现细节对客户透明
客户不需要关心细节的实现
缺点
- 增加系统的理解于设计难度
结构图
- Implementor
角色说明
-
Abstraction
抽象化角色
定义出角色的行为,同时保存一个对现实化角色的引用 -
Implementor
实现化角色
是接口/抽象类 -
RefinedAbstraction
修正抽象化角色
引用实现化角色对抽象化角色进行修正 -
ConcreteImpementor
具体实现化角色
实现接口或抽象类定义的方法和属性
实现
- Implementor
abstract class Implementor
{
public abstract void Operation();
}
- ConcreteImplementorA
class ConcreteImplementorA :Implementor
{
public override void Operation()
{
Console.WriteLine("具体实现A的方法执行");
}
}
- Abstraction
class Abstraction
{
protected Implementor implementor;
public void SetImplementor(Implementor implementor )
{
this.implementor = implementor;
}
public virtual void Operation()
{
implementor.Operation();
}
}
- RefinedAbstraction
class RefinedAbstraction : Abstraction
{
public override void Operation()
{
implementor.Operation();
}
}
- Client
static void Main(string[] args)
{
Abstraction ab = new RefinedAbstraction();
ab.SetImplementor(new ConcreteImplementorA());
ab.Operation();
Console.Read();
}