設計模式(Design Patterns)開宗明義指出:「設計物件導向軟體很難,設計可再利用(reusable)的物件導向軟體更難。(Designing object-oriented software is hard, and designing reusable objectoriented software is even harder.)」設計模式的目的與意義就是解決這個設計問題,由四人幫(Gang of Four, GoF)將物件導向設計的成功經驗整理成為「設計模式」,藉由設計模式將成功的設計與架構更容易可再被利用,讓設計師更快設計出正確的軟體,讓新的系統開發者更容易進入狀況。
「設計模式」一詞源於美國建築理論學家─克里斯多福‧亞歷山大(Christopher Alexander),他解釋:
每一則模式都在描述某種一再出現的問題,並描述解決方案的核心,讓你能據以變化出各種招式,解決上萬個類似的問題。
Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.
物件導向的設計模式由四人幫提出3大類(依據目的劃分)共23種設計模式,由他們對設計模式命名與編纂(ㄗㄨㄢˇ)成型錄。
X | 目的 | |||
生成模式 (Creational Patterns) | 結構模式 (Structural Patterns) | 行為模式 (Behavioral Patterns) | ||
範疇 | 類別 | 工廠方法模式 (Factory Method) | 轉接器模式 (Adapter) | 解譯器模式 (Interpreter) 範本方法模式 (Template Method) |
物件 | 抽象工廠模式 (Abstract Factory) 建造者模式 (Builder) 原型模式 (Prototype) 獨體模式 (Singleton) | 轉接器模式 (Adapter) 橋接模式 (Bridge) 組合模式 (Composite) 裝飾模式 (Decorator) 外觀模式 (Façade) 享元模式 (Flyweight ) 代理模式 (Proxy) | 職責鏈模式 (Chain of Responsibility) 命令模式 (Command) 迭代器模式 (Iterator) 仲介者模式 (Mediator) 備忘錄模式 (Memento) 觀察者模式 (Observer) 狀態模式 (State) 策略模式 (Strategy) 訪問者模式 (Visitor) |
由上表可以看到設計模式使用的範疇分為兩類,一是類別,另一是物件。類別模式處理類別與子類別之間的設計方式,在程式編譯期間(compile-time)就已經決定,屬於靜態關係。而物件模式則是處理物件之間的設計方式, 在程式執行期間(run-time)才運作,屬於動態關係。
有關物件導向設計模式必須慢慢仔細品嚐,才能發覺其中設計的精神!
###
延伸閱讀
物件導向設計模式
沒有留言:
張貼留言