桥接模式:
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
适用性:
你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。
类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge 模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。
对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。
例子:
public abstract class Sharp
{
public abstract void ShowMessage();
}
public class Circle extends Sharp
{
public void ShowMessage()
{
System.out.println("i am circle!") ;
}
}
public class Rectangle extends Sharp
{
public void ShowMessage()
{
System.out.println("i am rectangle!") ;
}
}
public abstract class SharpAbstraction
{
private Sharp sharp = null ;
public void SetSharpItem(Sharp sharp)
{
this.sharp = sharp ;
}
public abstract void ShowMessage() ;
}
public class ShartAbstractionImpl extends SharpAbstraction
{
public void ShowMessage()
{
this.sharp.ShowMessage() ;
}
}
public class Test
{
public static void main()
{
SharpAbstraction shartAbstractionA = new ShartAbstractionImpl() ;
shartAbstractionA.SetSharpItem(new Rectangle()) ;
shartAbstractionA.ShowMessage() ;
SharpAbstraction shartAbstractionB = new ShartAbstractionImpl() ;
shartAbstractionB.SetSharpItem(new Circle()) ;
shartAbstractionB.ShowMessage() ;
}
}