码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式(知识点2)

时间:2014-08-23 16:50:51      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:设计模式   工厂模式   设计   编程   扩展   

1.真实世界代码中看到模板方法模式的许多变体,不要期待它们全都是一眼就可以被你认出的。

2.策略模式和模板方法模式都封装算法,一个用组合,一个用继承。

3.工厂方法是模板方法的一种特殊版本。

4.内聚(cohesion),它用来度量一个类或模板紧密地达到单一目的或责任。当一个模板或一个类被设计成只支持一组相关的功能时,我们说它具有高内聚;反之,当被设计成支持一组不相关的功能时,我们说它具有低内聚。

内聚是一个比单一责任原则更普遍的概念,但两者其实关系很密切的,遵守这个原则的类容易具有很高的凝聚力,而且比背负许多责任的低内聚类更容易维护。

5.把策略模式想成除了继承之外的一种弹性替代方案,如果你使用继承定义一个类的行为,你将被这个行为困住,甚至要修改它都很难。有了策略模式,你可以组合不同的对象来改变行为。

6.把状态模式想成是不用在context中放置许多条件判断的替代方案,通过将行为包装进状态对象中,你可以通过在context内简单的改变状态对象来改变context的行为。

7.工厂模式:工厂方法用来处理对象的创建,并将这样的行为封装在子类中。这样,客户程序中关于超类的代码就和子类对象创建代码解耦了。

8.命令模式:当需要将发出请求的对象和执行请求的对象解耦的时候,可以使用命令模式。

接收者存在的必要性(解耦):一般来说,我们尽量设计“傻瓜”命令对象,它只知道调用一个接收者的行为。然而许多“聪明”的命令对象会实现许多逻辑,直接完成一个请求,这样一来,调用者和接收者之间的解耦程度比不上“傻瓜”命令对象。

9.适配器模式的意图:"改变"接口符合客户的期望

10.外观模式的意图:提供一个子系统简化接口

11.装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的

12.设计原则

找出程序中会变化的方面,然后将其和固定不变的方面相分离

在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型。用这个模式,你可以改变依赖于主题状态的对象,却不必改变主题。这就叫提前规划!

针对接口编程,不针对实现编程

主题与观察者都使用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点。

多用组合,少用继承

观察者模式利用“组合”将许多观察者组合进主题中。对象之间的这种关系不是通过继承产生的,而是在运行时利用组合的方式而产生的。

13.组合模式以单一责任设计原则换取透明性





设计都不免需要折中:在抽象和速度之间取舍,在空间和时间之间平衡,[ 代码应该如同晚霞中的莲花一样地关闭(免于改变),如同晨曦中的莲花一样地开放(能够扩展)]

设计模式(知识点2)

标签:设计模式   工厂模式   设计   编程   扩展   

原文地址:http://blog.csdn.net/u011742227/article/details/38778795

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!