软件设计中桥梁模式实现与分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件设计中桥梁模式实现与分析

软件设计中桥梁模式实现与分析   【摘 要】在软件设计模式中,桥梁模式是结构模式的一种,可以有效地将软件产品的抽象化部分与实现化部分进行脱耦,从而使抽象部分与实现可以相对独立的变化。本文主要讨论桥梁模式的实现方法及分析。   【关键词】实现、脱耦、独立变化      1、现象分析   在软件产品的研发过程中,随着开发过程的逐步深入,我们避免不了地需要“改”程序。程序开发人员可以使用面向对象继承的特征,实现程序的重用和改写,从而使程序适应开发过程中的变化,有效地解决程序的扩展问题。   使用面向对象技术研发软件产品,存在着这样一种情况,一类事物的变化与其它多类事物存在着牵连,也就是说,通常一类事物引起变化的因素比较多。这时,就使得当其它部分出现变化时,需要更改前一类事物。虽然使用面向对象继承的机制可以实现程序要求,但会使程序中类的数量成爆炸性增长。例如:以生产可乐为例,可乐可以根据瓶子的尺寸分为大瓶可乐和小瓶可乐,还可以根据生产厂商的不同分为百事可乐和可口可乐。   仔细分析上面的类图,会发现这样一个问题:使用继承机制扩展可乐的生产实现,会给开发带来很多不便。如果增加一个可乐的生产厂商,这个厂商需要分别做大瓶可乐和小瓶可乐两种实现;如果程序要添加一种新的可乐尺寸,程序需要为所有已有厂商添加新尺寸的实现。在这种情况下,我们发现扩展程序虽能实现,但实现不方便,结构繁杂。那么,有没有什么办法能够更好的解决灵活扩展的问题呢?有,那就是桥梁模式。   2、桥梁模式实现   桥梁模式的核心思想将抽象部分与它的实现部分分离,使它们都可以独立地变化。在生产可乐饮料的例子中,我们使用继承的实现方式实质上创建了一种强性关联,使用桥接方式可以将强性关联转变成弱关联,也就是脱耦。   桥梁模式中的角色:   抽象角色:定义抽象类的接口而且维护着一个指向实现角色的引用。   精确抽象角色:实现并扩充由抽象角色定义的接口。   实现角色:定义实现类的接口,接口与抽象角色中的接口可以不一致。   具体实现角色:定义实现角色定义接口的具体实现。   3 实现代码   (1)实现接口的定义   主要任务是定义抽象部分需要的功能,仅完成抽象功能定义。但需要注意,其定义形式可以与抽象部分的定义形式不同,示意代码如下:      public interface 实现   {    void 实现操作();   }   (2)抽象部分的定义   在此部分需要调用实现部分定义的操作。因此,在抽象部分需要持有实现部分的引用,构建具体抽象对象时指定具体实现的对象,使程序基于组合的结构方式完成功能。示意代码如下:      public abstract class 抽象   {    protected 实现实现引用;    public 抽象(实现实现引用)    {    this.实现引用 =实现引用 ;    }    public void 操作()    {    实现引用.实现操作();    }   }      (3)具体实现的定义   完成实现接口定义的抽象方法,示意代码如下:   具体实现1:      public class 具体实现1 implements 实现   {    public void 实现操作()    {    //具体实现操作    }   }      具体实现2:      public class 具体实现1 implements 实现   {    public void 实现操作()    {    //具体实现操作    }   }      (4)精确抽象的定义   其泛化了抽象部分,具备抽象部分开放的操作,完成了更为具体的操作,示例代码如下:   精确抽象1:      public class 精确抽象1 extends 抽象   {    public 精确抽象1(实现 实现引用)    {    super(实现引用);    }    public void 其他操作()    {    //通过使用抽象中定义的方法来扩展的功能    }   }      精确抽象2:      public class 精确抽象2 extends 抽象   {    public 精确抽象1(实现 实现引用)    {    super(实现引用);    }    public void 其他操作()    {    //通过使用抽象中定义的方法来扩展的功能    }   }      (5)客户端调用   在客户端调用时,首先根据

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档