Day 29: 23 + 1 个模式的总结

Creational patterns - Summary

主旨

「物件导向设计模式」定义为:

将物件具现化的过程抽下样话地加以萃取,使系统能独立於物件的建立、组成及表现方式之外。

属於此类别的模式

此类别的模式专注在如何制作物件。

  • 入门 -> Simple Factory Method
    • 了解使用 switch 产生类别及为一种模式。
  • 初阶应用 -> 衍生出子类别(子代)-> 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

<<:  Angular Stock上市个股日成交(三)(Day29)

>>:  Day29 实作todoList(四)产生事项列表

Day 20 Ruby 封装 vs 继承

封装 先请 wiki 大大出来讲个话: 在物件导向程序设计方法中,封装(英语:Encapsulati...

[C#+ECharts] 使用 ECharts 建立股票 K 线图 (附范例)

今天展示一下如何在 Asp.Net MVC 上显示 ECharts 的 K 线图套件,这个 K 线图...

数据和系统所有者(Data and System Owners)

如果未识别数据,则无法分配数据所有者。仅在识别,定位并清点数据之後才分配数据所有者。此外,在整个组织...

JavaScript Day 4. ParseInt / ToString

ParseInt() 直到我在写这篇之前,parseInt 在我心中都还是一个很简单的概念,一个可以...

Day16 - this&Object Prototypes Ch3 Objects - Iteration 开头

作者说明 forEach()、every()、some() 三者在跑回圈运作上的差异 forEach...