Bridge模式

来源:互联网 发布:svn迁移到linux 编辑:程序博客网 时间:2024/06/05 10:13

说在文章之前,本文都是自己学习了设计模式之后的一些个人的理解,干货不是很多,记录下来主要是方便自己查看,同时也可以和大家交流下,发现自己理解当中的一些纰漏。

Bridge模式属于结构型设计模式,主要作用是实现对象抽象和实现的分离。达到降低程序耦合的效果。

模式的介绍

将对象的抽象和实现进行分离,使之可以独立的变化。[出自设计模式]

首先我们来解释什么叫做对象的抽象和实现。
对象的抽象就是程序设计中对于现实当中的对象进行概念上的提取,并进行代码上的描述。这里更加注重的是对象概念的提取,而不是对象的一些操作。对象的实现在代码上面更多的表现为一些具体的操作。
常规的做法是采用继承的方式来实现对象抽象和实现之间的耦合。这样有很大的缺点就是:将对象的抽象和实现进行了固定的绑定,很难进行后续的修改、扩充和重用[出自设计模式]。
Bridge模式就是想要将两者进行分离,采用耦合度更低的方式来关联两者。以便使之可以独立的修改、扩充。

模式的实现方式

既然我们明确了要求,就需要具体的实现。

首先,我们应该从概念上对抽象和实现进行分离,明确那一部分属于对象的抽象部分,那一部分属于对象的实现。如果这里没有完成很好的划分,那么整个设计模式的作用很难体现出来,因为没能实现两者的分离。

然后对对象的两个部分分别使用一个对象进行描述,实现自己部分的操作,也可以在这里使用多继承的技术,相当于对两者分别进行了扩充。

最后,关联两者。一般采用的是在对象的抽象部分设置一个对象实现的引用。这意味着在代码的执行阶段,对象可以采用不同的实现。

优点

Bridge模式有以下一些优点:
1、分离接口及其实现部分 一个实现未必不变地绑定在一个接口上。抽象类的实现可以在运行时刻进行配置,一个对象甚至可以在运行时刻改变它的实现。将Abstraction与Implementor分离有助于降低对实现部分编译时刻的依赖性,当改变一个实现类时,并不需要重新编译 Abstraction类和它的客户程序。为了保证一个类库的不同版本之间的二进制兼容性,一定要有这个性质。另外,接口与实现分离有助于分层,从而产生更好的结构化系统,系统的高层部分仅需知道Abstraction和Implementor即可。
2、 提高可扩充性 你可以独立地对Abstraction和Implementor层次结构进行扩充。
3 、实现细节对客户透明 你可以对客户隐藏实现细节,例如共享Implementor对象以及相应的引用计数机制(如果有的话)。

总结

设计模式的书中说过,设计模式本就是一些程序开发经验的总结和提取,所以每个人对同样的模式可能有不同的使用方式,只要能够使项目结构更合理、健壮都是合理的方式。至于其中的得失,需要自己进行评估。

0 0
原创粉丝点击