Singleton
- 讓特定的 instance 只有唯一 instance,即第二次建立的新 object 仍與第一次建立的是同一個
- Object Literal:每次使用 literal 即已建立 singleton,因 JavaScript 中除非是同一 object,否則 object 不可能相等
- Constructor Function 方法有二:
- 可將 instance 的 cache 放在 static property 中,缺點是其為 public 可能被更動
- 將 instance 包進 closure,保持其為 private
Factory
- 便於建立相似的 object,提供一個建立方式(如以不同字串辨別),且無須先知道明確型別
- 如
Object()
constructor 的行為也是 factory,會根據輸入內容產生不同 object
Iterator
- 提供資料的集合,以藉由簡單的操作來存取個別元素(如
next()
、hasNext()
)
Decorator
- 在執行時期可動態加入新功能至 object
Strategy
- 在執行時期選擇適合處理的 algorithm
- 實例:validator 自動選擇不同檢查類型
Facade
- 提供替代介面,以保持 method 簡短
- 例如有多個 methods 常會同時被呼叫,則可另外建立一個新 method 包裝這些會一起呼叫的 methods
Proxy
- 控制存取權,將多個操作組合,以避免昂貴運算(例如多個 request 組合成一個)
Mediator
- 讓各個獨立 object 不直接溝通,透過 mediator 進行溝通以降低 coupling,提升可維護性
- 白話一點就是不要讓 object 認識太多其他 object,維護時會有困難;讓大家只專注在自己的工作即可,並由 mediator 負責彼此的溝通
Observer (PubSub)
- 又稱 custom events,同樣也是為了降低 coupling 以提升可維護性
- 使 object 不再直接呼叫其他 object 的 method,而是 subscribe 其他 object 的特定活動,並在 event 發生時由 publisher 通知 subscribers