设计模式——Bridge

意图

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

  GOF中对桥接模式的意图描述,是这样写的,在我第一次理解的过程中,对“抽象部分”、“实现部分”的理解,很不具体。
  通常,我对于“抽象部分”的理解,更偏重于“接口”、“抽象类”等,“实现部分”,更偏重于“子类”、“实现类”,但如果以这种方式理解,Bridge模式就没有任何意义了。

实例

Bridge模式实例
  左侧Window层次,是一种对视窗系统的抽象;其中Window是接口或抽象类,IconWindow是Window的子类,是抽象的视窗系统的一部分——图标。Window汇聚了视窗系统的基本操作,比如“DrawRect()”,其子类调用父类(Window)抽象出的基本操作,实现自己的方法、功能。因此,Window类可以看做是视窗系统所有基本操作的抽象集合。
  右侧是视窗系统在不同机器上的实现,准确的说不是整个视窗系统,而是视窗系统中的基本操作、功能,在不同机器上的实现。Window类中的方法在WindowImpl及其子类中都有对应的方法,所以右侧是视窗系统基本操作的实现类层次。WindowImpl是一个接口,描述视窗系统基本操作的实现。其子类描述不同机器上的具体实现。
  明白了“抽象”是对视窗系统基本操作的抽象,“实现”是对视窗系统基本操作的实现;将视窗系统基本操作分离出来,那么整个视窗系统怎么演化,都还是这些基本操作,与基本操作的实现,也就是具体机器无关;同时具体使用的机器发生变化,视窗系统仍然能够使用。这就是“抽象部分”和“实现部分”分离。

类图结构

Bridge模式类图
  有了上面具体实例的分析,现在来看类图,就比较清楚了,个人觉得,把握住了“抽象部分”和“实现部分”是对那些部分的抽象和实现,就能明白Bridge模式了。
  当然具体来说,RefinedAbstraction类中,应该使用Abstraction类中的Operation(),构建更加复杂的功能;而Abstraction类中的Operation()具体实现,由Implementor类层次实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值