首页 > 代码库 > 设计模式(知识点2)
设计模式(知识点2)
1.真实世界代码中看到模板方法模式的许多变体,不要期待它们全都是一眼就可以被你认出的。
2.策略模式和模板方法模式都封装算法,一个用组合,一个用继承。
3.工厂方法是模板方法的一种特殊版本。
4.内聚(cohesion),它用来度量一个类或模板紧密地达到单一目的或责任。当一个模板或一个类被设计成只支持一组相关的功能时,我们说它具有高内聚;反之,当被设计成支持一组不相关的功能时,我们说它具有低内聚。
内聚是一个比单一责任原则更普遍的概念,但两者其实关系很密切的,遵守这个原则的类容易具有很高的凝聚力,而且比背负许多责任的低内聚类更容易维护。
5.把策略模式想成除了继承之外的一种弹性替代方案,如果你使用继承定义一个类的行为,你将被这个行为困住,甚至要修改它都很难。有了策略模式,你可以组合不同的对象来改变行为。
6.把状态模式想成是不用在context中放置许多条件判断的替代方案,通过将行为包装进状态对象中,你可以通过在context内简单的改变状态对象来改变context的行为。
7.工厂模式:工厂方法用来处理对象的创建,并将这样的行为封装在子类中。这样,客户程序中关于超类的代码就和子类对象创建代码解耦了。
8.命令模式:当需要将发出请求的对象和执行请求的对象解耦的时候,可以使用命令模式。
接收者存在的必要性(解耦):一般来说,我们尽量设计“傻瓜”命令对象,它只知道调用一个接收者的行为。然而许多“聪明”的命令对象会实现许多逻辑,直接完成一个请求,这样一来,调用者和接收者之间的解耦程度比不上“傻瓜”命令对象。
9.适配器模式的意图:"改变"接口符合客户的期望
10.外观模式的意图:提供一个子系统简化接口
11.装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的
12.设计原则
找出程序中会变化的方面,然后将其和固定不变的方面相分离
在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型。用这个模式,你可以改变依赖于主题状态的对象,却不必改变主题。这就叫提前规划!
针对接口编程,不针对实现编程
主题与观察者都使用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点。
多用组合,少用继承
观察者模式利用“组合”将许多观察者组合进主题中。对象之间的这种关系不是通过继承产生的,而是在运行时利用组合的方式而产生的。
13.组合模式以单一责任设计原则换取透明性
设计都不免需要折中:在抽象和速度之间取舍,在空间和时间之间平衡,[ 代码应该如同晚霞中的莲花一样地关闭(免于改变),如同晨曦中的莲花一样地开放(能够扩展)]
设计模式(知识点2)