Bridge模式--有自写代码

    

在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?

例子1:设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:(多维度变化,维度一不同的形状,维度二不同的颜色)

 

•第一种设计方案是为每一种形状都提供一套各种颜色的版本。

 

 

•第二种设计方案是根据实际需要对形状和颜色进行组合。

 

 

方案1:

 

 

 

 

 
方案2:

 

 

      对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。设计方案二即是桥接模式的应用。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合减少了代码编写量
 
 
 
下图所示就是一个实现了桥梁模式的示意性系统的结构图。

可以看出,这个系统含有两个等级结构,也就是:

  • 由抽象化角色和修正抽象化角色组成的抽象化等级结构。
  • 由实现化角色和两个具体实现化角色所组成的实现化等级结构。

 

 

 

posted @ 2016-09-23 16:54  fchy822  阅读(128)  评论(0)    收藏  举报