軟件模式概述
設計模式已廣泛應用於面向對象系統設計和開發,成爲面向對象技術的一個重要組成部分。當人們在特定環境下遇到特定類型的問題時,可以採用他人已使用過的一些已經成功的解決方案,既降低了分析、設計和實現的難度,也使得系統具有更好的可重用性和靈活性
軟件模式
設計模式起源於建築領域,模式描述瞭解決問題的核心方法,通過這種方式,我們可以無數次地重用那些已有的解決方案,無須重複相同的工作。
模式可以應用於不同的領域,軟件模式是將模式的一般概念應用於軟件開發領域,即軟件開發的總體指導思路或參照模板。軟件模式並非僅限於設計模式,還包括架構模式、分析模式和過程模式等,在軟件生存期的每一個階段都存在着一些被認同的模式。
設計模式的定義
設計模式是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結,使用這些設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
設計模式的基本要素
設計模式一般有如下幾個基本要素:模式名稱、問題、目的、解決方案、效果、實例代碼和其他相關設計模式,其中關鍵元素包括以下四個方面
-
模式名稱
通過一兩個詞來描述模式的問題、解決方案和效果,以更好地理解模式並方便開發人員之間的交流。
-
問題
描述了應該在何時使用模式,它包含了設計中存在的問題以及問題存在的原因。有時候問題描述可能會包含使用該模式時必須滿足的一系列先決條件。
-
解決方案
描述了設計模式的組成部分,以及這些組成部分之間的相互關係,各自職責和協作方式。解決方案並不描述一個特定而具體的設計或實現,而是提供設計問題的抽象描述和怎樣用一個具有一般意義的元素組合(類或者對象)來解決這個問題。
-
效果
描述模式應有的效果以及在使用模式時應權衡的問題。效果主要包含模式的優缺點分析,因此需要綜合考慮模式的效果。
設計模式的分類
設計模式一般有兩種分類方式
-
根據目的分類
-
創建型模式
主要用於創建對象,GoF提供了五種創建模式,分別是工廠方法模式(Factory Method)、抽象工廠模式(Abstract Method)、建造者模式(Builder)、原型模式(Prototype)和單例模式(Singleton)
-
結構型模式
主要用於處理類或對象的組合,GoF提供了七種結構型模式,分別是適配器模式(Adapter)、橋接模式(Bridge)、組合模式(Composite)、裝飾模式(Decorator)、外觀模式(Facade)、享元模式(Flyweight)和代理模式(proxy)
-
行爲型模式
用於描述類或對象怎樣交互和怎樣分配職責,GoF提供了十一種行爲型模式,分別是職責鏈(Chain of Responsibility)、命令模式(Command)、解釋器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、備忘錄模式(Memento)、觀察者模式(Observer)、狀態模式(State)、策略模式(Strategy)、模板方法模式(Template Method)和訪問者模式(Visitor)
-
-
根據範圍分類