设计模式总结-比较篇

设计模式总结-比较篇

ID:35310682

大小:279.26 KB

页数:4页

时间:2019-03-23

设计模式总结-比较篇_第1页
设计模式总结-比较篇_第2页
设计模式总结-比较篇_第3页
设计模式总结-比较篇_第4页
资源描述:

《设计模式总结-比较篇》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、注:文档内容基本上来自于网上,并加上自己的理解而成。有的觉得网友总结得非常好,就完全照搬下来,供学习之用。然而,有的摘抄并没有加上原链接和出处,请谅解。在设计比较设计模式的不同时,主要从以下几个方面思考:1.各个设计模式的主要解决的问题和主要目的是什么?2.各个设计模式之间并不是非此即彼的,他们之间有些有着很大的相似性。并且有的可以相互替代3.UML图和实现时的细节区别简单工厂模式和策略模式的区别简单工厂模式和策略模式的理解 相同之处:1.它们都有一个抽象类或公共接口,并且在抽象类或者接口中,定义一个方

2、法(或虚拟抽象方法);2.通过子类进行继承父类或者实现接口方法。3.使用多态特性,进行实例方法调用,调用的是子类的方法; 区别之处:1.简单工厂模式强调的是创建类对象,根据字符串类型参数传入参数,进行实例化;2.简单工厂模式,必须定义一个制造实例的工厂类Factory,且其工厂类,返回父类类型,不是子类类型;4.策略模式强调的算法封装,而算法的不同,增加相应的子类进行实现。    必须有一个Content类,提供两个方法,一个接受各个算法的实例对象(比如Set方法),一个是对子类方法的封装,提供访问客户

3、端统一的接口(这里说的接口是访问Content的接口,比如Action?)。   5. 策略模式中接受算法实例的方法,可以结合简单工厂模式,传入字符串参数,内部进行实例化,降低和客户端的耦合。桥接模式与策略者模式分析解释一:桥接模式在于分离了实现和抽象,它将其分别放到了两个不同的类层次.        golf说在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就

4、要使用Bridge模式。                从上图看到了两个变化维度,一个就是implementor,一个是abstraction,前者是实现后者是抽象,那说明实现和抽象两方面都可能变化。abstraction可能派生出不同的RefinedAbstraction,而Implementor也有不同的实际implementor.        那么这个桥就是连接两个变化维度的,RefinedAbstraction和ConcreteImplemetorA之间是通过Abstraction和Imple

5、mentor发生联系,而他们两个之间本身确实松散的关系,而Abstracion聚合了几个Implementor,那Abstraction即依赖了Implementor,而最终Abstraction试图基于implementor提供的基本操作又定义了更高层次的接口,比如Operation(),它们使用了implemntor提供的抽象接口,委托于具体来实现。而本身abstracion的高层接口也进行了派生。所以说有两个变化维度。       类似的策略者模式:区别1:bridge为构造模式,strategy

6、为行为模式。区别2:在策略模式中,并不考虑Context的变化,只有算法的可替代性,而bridge具有两个维度的变化。区别3:桥接模式强调Implementor接口仅提供基本操作,而Abstraction则基于这些基本操作定义更高层次的操作。而策略模式强调Strategy抽象接口的提供的是一种算法,一般是无状态、无数据的,而Context则简单调用这些算法完成其操作。解释二:桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。在桥接模式中,

7、Abstraction通过聚合的方式引用Implementor。在策略模式中,Context也使用聚合的方式引用Startegy抽象接口。从他们的结构图可知,在这两种模式中,都存在一个对象使用聚合的方式引用另一个对象的抽象接口的情况,而且该抽象接口的实现可以有多种并且可以替换。可以说两者在表象上都是调用者与被调用者之间的解耦,以及抽象接口与实现的分离。那么两者的区别体现在什么地方呢?1.首先,在形式上,两者还是有一定区别的,对比两幅结构图,我们可以发现,在桥接模式中不仅Implementor具有变化(C

8、oncreateImplementior),而且Abstraction也可以发生变化(RefinedAbstraction),而且两者的变化是完全独立的,RefinedAbstraction与ConcreateImplementior之间松散耦合,它们仅仅通过Abstraction与Implementor之间的关系联系起来。而在策略模式中,并不考虑Context的变化,只有算法的可替代性。2. 其次在语意上,桥接模式强调Implemento

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。