要点笔记:
- 知道OO基础,并不足以让你设计出良好的OO系统。
- 良好的OO设计必须具备可复用、可扩充、可维护三个特性。
- 模式可以让我们建造出具有良好OO设计质量的系统。
- 模式被认为是历经验证的OO设计经验。
- 模式不是代码,而是针对设计问题的通用解决方案。可把它们应用到特定的应用中。
- 模式不是被发明,而是被发现。
- 大多数的模式和原则,都着眼于软件变化的主题。
- 大多数的模式都允许系统局部改变独立于其他部分。
- 我们常把系统中会变化的部分抽出来封装。
- 模式让开发人员之间有共享的语言,能够最大化沟通的价值。
- 代码应该如同晚霞中的莲花一样地关闭(免于改变),如同晨曦中的莲花一样地开放(能够扩展)。
(一) 策略模式
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
(二) 观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时候
,它的所有依赖者都会收到通知并自动更新。
实现了松耦合:当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。
观察者模式中,主题和观察者之间松耦合,主题只知道观察者实现了某个接口,主题不需要知道观察者的具体类是谁,做了些什么或其他任何细节。
(三)装饰者模式
装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
(四)工厂模式