接口的抽象也不稳定的问题
多维度的变化
将抽象部分和实现部分相分离,使他们都可以独立的变化。
根据不同的变化类型,建立不同的虚类,再在不同的具体实现中进行这些派生类的对象的组合。
在虚类中放一个另外一个虚类的对象作为变量
Code:
public abstract calss Tank
{
protected TankOperation TankOP;
public Tank(TankOperation TankOP)
{
this.TankOP=TankOP;
}
public abstract void shot();
public abstract void run();
public abstract void stop();
}
public abstract class TankOperation
{
public abstract void MoveTankTo(Point to);
public abstract void DrawTank();
public abstract void DoShot();
}
public class T50 : Tank
{
public T50(TankOperation TankOP) : base(TankOP)
{
}
};
public class PCTankOperation : TankOperation
{
public override void MoveTankTo(Point to)
{
//...
}
};
要点:
- Bridge模式使用对象间的组合关系解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化
- 所谓抽象和实现沿着各自的维度变化,即子类化它们,比如不同的Tank型号子类,和不同的平台子类。得到各个子类后,便可以任意组合它们,从而获得不同平台上的不同型号。
- Bridge模式有时候类似于多继承方案,但是多继承方案往往违背单一职责原则,即一个类只有一个变化的原因,服用性价比差,Bridge模式是比多继承模式更好的解决办法。
- Bridge模式应用一半在两个非常强的变化维度,有时候即使有两个变化的维度,但是某个方向的变化维度并不剧烈。换言之两个变化不会导致纵横交错的结果,并不一定要使用Bridge模式。
类别:Programming 查看评论
文章来源:http://hi.baidu.com/hongchaol/blog/item/7fed11dfaf8a8f1362279843.html