桥接模式深入.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
桥接模式深入

12.5? 桥接模式(Bridge) 本节从以下几个方面来详细讲解桥接模式: ???? 桥接模式的核心思想。 ???? 何时使用桥接模式。 ???? 在Java中的应用—JDBC桥DriverManager。 12.5.1? 桥接模式的核心思想 桥接模式是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。桥接模式的用意是将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立变化。这句话有3个关键词,也就是抽象化、实现化和脱耦。 ???? 抽象化:存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样的实体对待。 ???? 实现化:抽象化给出的具体实现,就是实现化。 ???? 脱耦:所谓耦合,就是两个实体的行为的某种强关联。而将它们的强关联去掉,就是耦合的解脱,或称脱耦。在这里,脱耦是指将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联转换成弱关联。 将两个角色之间的继承关系改为聚合关系,就是将它们之间的强关联转换成为弱关联。因此,桥接模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立变化,这就是桥接模式的用意。 桥接模式所涉及的角色如下。 ???? 抽象化(Abstraction)角色—桥接类:抽象化给出的定义,并保存一个对实现化对象的引用。 ???? 修正抽象化(Refined Abstraction)角色—桥接具体类:扩展抽象化角色,改变和修正父类对抽象化的定义。 ???? 实现化(Implementor)角色—目标接口:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定与抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。 ???? 具体实现化(Concrete Implementor)角色—目标实现类:这个角色给出实现化角色接口的具体实现。 如图12-21所示就是一个实现了桥接模式的示意性系统的结构图。 图12-21? 桥接模式结构图 图中的Client就可以通过Bridge桥来实现对Sourcable实现类的操作了。 下面来看具体的实现。 (1)Sourcable类的源代码如程序12-39所示,它定义了两个操作函数。 程序12-39? 源接口Sourcable.java package structure.adapter; /** ?* @author liuzhongbing ?* 源接口 ?*/ public interface Sourcable { ??? public void operation(); } (2)SourceSub1实现了Sourcable接口,实现函数operation ()负责输出一个字符串。其源代码如程序12-40所示。 程序12-40? 源接口的实现子类SourceSub1.java package structure.adapter; /** ?* @author liuzhongbing ?* 源接口的实现类 ?*/ public class SourceSub1 extends DefaultWrapper { ??? public void operation() { ??????? System.out.println(源接口的一个实现子类Sub1); ??? } } (3)SourceSub2实现了Sourcable接口,实现函数operation ()负责输出一个字符串。其源代码如程序12-41所示。 程序12-41? 源接口的实现子类SourceSub2.java package structure.adapter; /** ?* @author liuzhongbing ?* 源接口的实现类 ?*/ public class SourceSub2 extends DefaultWrapper { ??? public void operation() { ??????? System.out.println(源接口的一个实现子类Sub2); ??? } } (4)桥接类Bridge是一个抽象类,它拥有一个Sourcable对象,并可以通过getter/setter来设置该对象。其源代码如程序12-42所示。 程序12-42? 桥接类Bridge.java package structure.bridge; /** ?* @author Administrator ?* 桥接模式抽象类 ?*/ public abstract

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档