寻找银弹

致力于探寻软件开发中的本质问题

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

接口的抽象也不稳定的问题

多维度的变化

 

将抽象部分和实现部分相分离,使他们都可以独立的变化。

 

根据不同的变化类型,建立不同的虚类,再在不同的具体实现中进行这些派生类的对象的组合。

在虚类中放一个另外一个虚类的对象作为变量

 


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)
    {
        //...
    }
};

要点:

  1. Bridge模式使用对象间的组合关系解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化
  2. 所谓抽象和实现沿着各自的维度变化,即子类化它们,比如不同的Tank型号子类,和不同的平台子类。得到各个子类后,便可以任意组合它们,从而获得不同平台上的不同型号。
  3. Bridge模式有时候类似于多继承方案,但是多继承方案往往违背单一职责原则,即一个类只有一个变化的原因,服用性价比差,Bridge模式是比多继承模式更好的解决办法。
  4. Bridge模式应用一半在两个非常强的变化维度,有时候即使有两个变化的维度,但是某个方向的变化维度并不剧烈。换言之两个变化不会导致纵横交错的结果,并不一定要使用Bridge模式。

类别:Programming 查看评论
文章来源:http://hi.baidu.com/hongchaol/blog/item/7fed11dfaf8a8f1362279843.html
posted on 2006-07-20 17:36  hchlee  阅读(135)  评论(0编辑  收藏  举报