Creational patterns - Summary
主旨
「物件导向设计模式」定义为:
将物件具现化的过程抽下样话地加以萃取,使系统能独立於物件的建立、组成及表现方式之外。
属於此类别的模式
此类别的模式专注在如何制作物件。
- 入门 -> Simple Factory Method。
- 初阶应用 -> 衍生出子类别(子代)-> Factory Method。
- 进阶应用 -> 采取复合策略
- 用产品物件的种类来定义、生产物件 -> Abstract Factory。
- 定义复杂的生产过程,确保最後能取得复杂的物件 -> Builder。
- 了解、学习如何完整复制物件 -> Prototype。
- 异数 -> 没有生产物件,确保系统内只存在一个物件 -> Singleton。
Structural patterns - Summary
主旨
「物件导向设计模式」定义为:
探讨如何以类别(class)和物件的组合成大型的结构。
属於此类别的模式
此类别的模式往往有特定的使用场合。
- 解决既有物件之间,介面(对外窗口)不相容的问题 -> Adapter。
- 开发前了解会有多个商业逻辑,因此设计出可以搭配多个商业逻辑的介面 -> Bridge。
- 从单一物件到组织类别的物件都有相同的结构,不用额外添加处理方式 -> Composite。
- 不打算继承产生子类别好增加新的方法 -> Decorator。
- 使用一个大物件代表整体系统 -> Facade。
- 在乎记忆体使用的效率所以共享物件 -> Flyweight。
- 提供一个间接存取层,可限制、增强、改变幕後物件的属性 -> Proxy。
Behavioral patterns - Summary
主旨
「物件导向设计模式」定义为:
探讨物件之间的演算法、权责分配问题以及沟通方式。
属於此类别的模式
此类别的模式往往带有强烈的使用目的。
- 让多个物件都有机会处理某一讯息,以降低讯息发送者和接收者之间的耦合关系 -> Chain of Responsibility。
- 将行为转变成物件,以便有储存、删除、暂停、复原等操作 -> Command。
- 学习转化、解译特定讯息 -> Interpreter。
- 实作
forEach()
-> Iterator。
- 将物件之间的沟通集中起来 -> Mediator。
- 使用特定物件「储存」另一个物件在某个时刻的内部状态 -> Memento。
- 当多个物件需要「监听」特定物件的状态变化 -> Observer。
- 当物件的方法会随着「自身的状态」改变执行细节 -> State。
- 当物件的方法会随着「带入的参数」不同而有不同的执行细节 -> Strategy。
- 物件大部分的结构、方法都完成,部分方法的细节部分随着不同的情境而有不同的执行细节 -> Template Method。
- 当有相似结构的「物件们」需要增加相同名称但是不同执行细节的方法 -> Visitor。