设计模式例子归纳的总结.docxVIP

  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.UML图和实现时的细节区别   桥接模式与策略者模式分析   解释一:   桥接模式在于分离了实现和抽象,它将其分别放到了两个不同的类层次.   golf   说在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着(转载于:写论文网:设计模式例子归纳总结)多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。   从上图看到了两个变化维度,一个就是implementor,一个是abstraction,前者是实现后者是抽象,那说明实现和抽象两方面都可能变化。abstraction可能派生出不同的RefinedAbstraction,而Implementor也有不同的实际implementor.   那么这个桥就是连接两个变化维度的,RefinedAbstraction和   ConcreteImplemetorA之间是通过Abstraction和Implementor发生联系,而他们两个之间本身确实松散的关系,而Abstracion聚合了几个Implementor,那Abstraction即依赖了Implementor,而最终Abstraction试图基于implementor提供的基本操作又定义了更高层次的接口,比如Operation(),它们使用了implemntor提供的抽象接口,委托于具体来实现。而本身abstracion的高层接口也进行了派生。所以说有两个变化维度。类似的策略者模式:   区别1:bridge为构造模式,strategy为行为模式。   区别2:在策略模式中,并不考虑Context的变化,只有算法的可替代性,而bridge具有两个维度的变化。   区别3:桥接模式强调   Implementor接口仅提供基本操作,而   Abstraction则基于这些基本操作定义更高层次的操作。而策略模式强调Strategy抽象接口的提供的是一种算法,一般是无状态、无数据的,而Context则简单调用这些算法完成其操作。   解释二:   桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。   在桥接模式中,Abstraction通过聚合的方式引用Implementor。   在策略模式中,Context也使用聚合的方式引用Startegy抽象接口。   从他们的结构图可知,在这两种模式中,都存在一个对象使用聚合的方式引用另一个对象的抽象接口的情况,而且该抽象接口的实现可以有多种并且可以替换。可以说两者在表象上都是调用者与被调用者之间的解耦,以及抽象接口与实现的分离。   那么两者的区别体现在什么地方呢?   1.首先,在形式上,两者还是有一定区别的,对比两幅结构图,我们可以发现,在桥接模式中不仅Implementor具有变化,而且Abstraction也可以发生变化,而且两者的变化是完全独立的,   RefinedAbstraction与ConcreateImplementior之间松散耦合,它们仅仅通过   Abstraction与Implementor之间的关系联系起来。而在策略模式中,并不考虑Context的变化,只有算法的可替代性。   2.其次在语意上,桥接模式强调Implementor接口仅提供基本操作,而Abstraction则基于这些基本操作定义更高层次的操作。而策略模式强调Strategy抽象接口的提供的是一种算法,一般是无状态、无数据的,而Context则简单调用这些算法完成其操作。   3.桥接模式中不仅定义Implementor的接口而且定义Abstraction的接口,Abstraction的接口不仅仅是为了与Implementor通信而存在的,这也反映了结构型模式的特点:通过继承、聚合的方式组合类和对象以形成更大的结构。在策略模式中,Startegy和   Context的接口都是两者之间的协作接口,并不涉及到其它的功能接口,所以它是行为模式的一种。行为模式的主要特点就是处理的是对象之间的通信方式,往往是通过引入中介者对象将通信双方解耦,在这里实际上就是将Context与实际的算法提供者解耦。   所以相对策略模式

文档评论(0)

dajia1qi + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档