设计模式特点对比分析

设计模式目录
面向对象最能体现设计的就是多态了,模式中用的最多的就是多态。对多态的不同运用就形成了个模式不同的特点。
多态理解:就相同函数在不同的对象中表现的不同行为。
如下对设计模式的特点进行一下整理,方便记忆,防止对模式间的共性部分区分不清。
一。创建型模型
1.工厂方法:一个多态的函数,创建一个对象(一个方法:创建一个对象)
2.抽象工厂:一个多态的函数,创建一系列的对象(一堆方法:创建一组对象)
3.创建者模式呢:一系列多态的函数,传入一个已经new了的对象,按照1~N的顺序对对象进行再加工。
4.单件模式:特点很明显,就是保证只有一个实例。
5.原型模型:特点也很明显,就是一个类能拷贝自己。
二。结构型模型
1.适配器模式:就是解决接口不同的问题,简单来说,是解决接口名称不同的问题。
可以简单这样理解,但如果你理解的更深入了,你自然就明白这句话的局限性了。
2.桥接模型:这个实际就是俩个对象组合起来,完成两个维度的机能变化。
最明显的就是二维表或者多维表的需求。
对应组合聚合的设计原则。
两个维度的多态组合出丰富多彩的机能。
3.装饰器模式:这个和桥接模式的设计原则刚好相反,是用继承的方式来丰富机能。
特点就是自己和自己的父类是桥接关系,每一次继续就相当于一次机能的组合,无限制的继承,不受维度的限制。
这个模式的多态函数,在不断用继承丰富自己,同时继承父亲已经丰富的内容。
4.组合模式:这是一个很有特点的模式,不需要和其他模式做应用对比分析。
对象按照组合对象定义接口,简单对象可以不实装。
在调用该对象是,不用关心用的是组合对象还是简单对象。
5.外观模式:这个模式没啥说的,特点明显,只和行为类型模式的中介者有点想,差别在于,该模式的作用是用完模块外部,中介者模式用于模块内部。
该模式的作用的价值在于对模块机能的封装。
中介者模式的作用是减少内部模式的调用关系。
6.享元模式:该模式和但实例模式有点像,差别在于该模式是为了性能,而单实例不是为了性能,而是为了保证作用对象的一致。
单实例模式用在无论了解多少次数据库,保证都连接的一个数据库对象。
该模式用在大量字符处理时,把共性提前不来,相同字符共享共性的东西,节约空间开销。
7.代理模式:就是一个中间层的思想,和外观,中介者,都有点相似。
只不过这里更强调,是两个模块之间的中间层,这和中介者有点像,但这往往处在更大的一个级别的中间层,其实这也有外观的味道,但是他的偏向性没有外观明显,不特别偏向于两个关联层的那一层。
和中介者模式比:这代理的的模块往往比中介者连接的模块更大。(模块内部(中介者模式)->外观->代理->其他模块)
和外观模式比:他比外观距离所属的模块往往更远。(模块内部->外观->代理->其他模块)
三。行为型模型
1.模板方法:就是一个多态函数,内部调用几个可多态的方法。
这和创建者模式有点像。但这些强调的是方法。
创建者模式中应该是该模式运用的一种放在,因为创建者模式要求一系列函数必须是针对同一个对象的加工,而该模型中的一系列函数,没有这个限制。
2.命令模式,这是一个很有特点的模型,就是把函数封装成对象,可以延迟函数执行的时机。
要说像,其实和策略的部分也有点像,因为他们在最终运用的时候都是根据不同对象相同接口的调用产生不同的机能。
差别在于:策略的函数多态的接口几乎都是相近的,命令在调用的接口也统一成了一个命令,但是真正调用的接口是不同的,完全没有相似性的,名称完全不同。
3.迭代器模式:这个没啥说的,特点很明显,不和任何模式有相似性。
4.观察者模式:这里实际上依赖了迭代器模式。
因为被观察者和观察者是1对多的关系。
通知的时候也是迭代处理。
但是该模式本身也是特点明显的,就是调用观察者的更新函数。
要说相似性,也可以和访问者作一下对比。
差别就是,被访问者也是调用访问者,但是调用的过程中会把追加做未参数传递过去。
而观察者不需要传参数。为什么会有这个差别呢。
观察者,只关心状态,而状态时固态的,是简单类型。
访问者不同,访问者关心的被访问者是多态的,是对象。
5.解释器模式:这个不说,特点过于明显
6.中介者模式:这个和外观模式已经做过对比说明了
7.职责链模式:这个模式和状态模式和策略模式都是很相似的,但是他们都各有特点。
他们都是,对同一函数的调用,而产生多态的效果。
策略:是调用者选择对象。
职责链:调用关系固定。
状态:由状态决定调用那个对象。
由于他们之间的共性和个性都很多,说以会单用一篇文章深入解析。
策略、状态、职责链、共同点和差异分析
策略、状态、职责链、多角度分析
8.备忘录模式:特点过于明显,不做说明
9.策略模式:在职责链模式做过分析了
10.访问者模式:这个模式和观察者模式做过对比说明.
11.状态模式:这个模式职责链模式试已经讲过.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值