桥接模式

  在实际生活中,某些事物由于自身的逻辑,具有两个或多个维度的变化。

  考虑这样一个场景:国家武装力量分为海军、陆军、空军三个军种,海陆空三军各自又有军师旅团营等

建制。对于各个军种,以上的建制单位所包含的人数是不一样的。陆军人数较多,而空军人数较少。这样就

产生了两个维度,一个是军种维度,另一个是具体的各个军种的建制制度。在军种制度,可以增加例如“外空”

的新军种;在建制维度,可以修改在各个军种中的人数,或者增加一个新的军事单位。

  在软件设计中,又如何应对这种“多维度的变化”?如何巧妙的设计软件,使得系统可以沿着两个或多个维度

进行独立地增加或者变化,而这种变化又不会对现有的类产生影响。这种场景可以使用桥接模式(Bridge Pattern)

其意图是将一个软件设计的抽象部分与实现部分分离,使他们都可以独立地变化。

  在所设计的程序中有几个维度时,将抽象部分和实现部分分离的设计,可以使程序独立,互不影响地增加

类,而不需要改变甚至不需要重新编译原来已经存在的类。

现实实例:

  自动茶水销售机的实例:该机器销售的茶水在杯子的体积上分为中杯和大杯,在茶叶品种上分为红茶和绿茶,

对其进行销售程序设计。

  类图设计 

 

 

   将抽象部分与实现部分分离开来,抽象部分为茶杯大小,实现部分为茶的种类,将其分离开来,这样就比

较容易在茶的品种和茶杯的体积方面增加新的类。

  

桥接模式的特点:

  (1)分离接口和实现部分。

  (2)提高可扩展性。可以独立的对抽象部分和实现部分进行扩展。

  (3)实现细节对客户的透明。可以客户隐藏实现细节。

  桥接模式强调对象有两个以上的维度变化,简化多级继承关系,但同时增加了聚合对象的内部方法,因为

它不得不多写方法以便包含它的类调用。

 

posted @ 2018-06-01 12:34  listener_lei  阅读(498)  评论(0编辑  收藏  举报