設計模式根據模式的目的可以分爲創建型, 行爲型和結構型
創建型模式涉及到將對象實例化, 這類模式都提供了一個方法將客戶從所需要實例化的對象中解耦
工廠方法模式: 由子類決定要創建的具體類是哪一個
抽象工廠模式: 允許客戶創建對象的家族, 而無需指定他們的具體類
單例模式: 確保有且只有一個對象被創建
結構型模式可以讓你把類或對象組合到更強大的結構中
裝飾者模式: 包裝一個對象以提供新的行爲
適配器模式: 封裝對象並提供不同的接口
外觀模式: 簡化一羣類的接口
組合模式: 客戶用一致的方式處理對象集合和單個對象
代理模式: 包裝對象以控制對此對象的訪問
行爲型模式都涉及到類和對象如何交互及分配職責
策略模式: 封裝可以互換的行爲, 並使用委託來決定要使用哪一個
觀察者模式: 讓對象能夠在狀態改變時被通知
命令模式: 封裝請求成爲對象
模板方法模式: 由子類決定如何實現一個算法中的步驟
迭代器模式: 在對象的集合中游走, 而不暴露集合的實現
狀態模式: 封裝了基於狀態的行爲, 並使用委託在行爲之間切換