实现系统可能有多角度分类,每一种分类都有可能变化,那么把这种多角度的变化抽离出来让他们独立变化,减少它们之间的耦合。 摘自(大话设计模式)
比如一种变化是5种,另外一种变化是4中,那么总共的变化是20种。按照传统的方式,需要分别列举这20种。而采用桥接模式后,只要5+4=9种就可以了。
双层嵌套if-else就可以用桥接模式来解套
abstract class Implementor
{
public abstract void Operation();
}
class ConcreteA : Implementor
{
public override void Operation()
{
throw new NotImplementedException();
}
}
class ConcreteB : Implementor
{
public override void Operation()
{
throw new NotImplementedException();
}
}
class Abstration
{
protected Implementor implementor;
public void SetImplementor(Implementor implementor)
{
this.implementor = implementor;
}
public virtual void Operation()
{
implementor.Operation();
}
}
class RefinedAbstration: Abstration
{
public override void Operation()
{
implementor.Operation();
}
}
class Program
{
static void Main(string[] args)
{
Abstration abstration = new RefinedAbstration();
abstration.SetImplementor(new ConcreteA());
abstration.Operation();
abstration.SetImplementor(new ConcreteB());
abstration.Operation();
Console.WriteLine("Hello World!");
}
}