桥接模式

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

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

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

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

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

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

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

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

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

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

现实实例:

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

对其进行销售程序设计。

  类图设计 

 

 

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

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

  

桥接模式的特点:

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

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

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

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

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

 

转载于:https://www.cnblogs.com/leilong/p/9121113.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值