> For the complete documentation index, see [llms.txt](https://clu.gitbook.io/design-pattern/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://clu.gitbook.io/design-pattern/0about-design-pattern.md).

# 0. About Design Pattern

* Design Pattern的組成
  * 模式名稱: 為每個pattern取名字, 方便記憶與交流
  * 環境與問題: 描述在什麼場景下遇到了何種特定的問題
  * 解決方案: 描述如何解決此問題
  * 效果: 描述pattern應用之後的效果及可能帶來的問題, 或者使用中需要權衡的問題
* Design Pattern的分類(此處僅根據GoF中提到的23個pattern)
  * 創建型(**Creation**): 抽象了物件實例化的過程, 用來幫助建立物件的實例
  * 結構型(**Structural**): 描述如何組合class和object以獲得更大的結構
  * 行為型(**Behavioral**): 描述演算法與物件之間的職責分配
* Design Pattern的分類(依照Wolfgang Pree的著作分類)
  * 依賴抽象耦合的模式(**abstract coupling**)
  * 基於遞迴的模式(**recursive structure**)
  * 其他模式
* Design Pattern和OO Design Principle
  * OOAD有很多原則, 而這些大都是從思想層面出發
  * Design principle是思想上的指導
  * Design pattern是實作上的手段
  * 即design pattern為design principle的某些具體實作
  * 設計是一種危險的平衡
