設計模式概論
1. 軟體設計模式的概念
軟體設計模式(software design pattern),又稱設計模式,是一套被反覆使用、多數人知曉的、經過分類編目的、**設計經驗的總結。它描述了在軟體設計過程中的一些不斷重**生的問題,以及該問題的解決方案。也就是說,它是解決特定問題的一系列套路,是前輩們的**設計經驗的總結,具有一定的普遍性,可以反覆使用。其目的是為了提高**的可重用性、**的可讀性和**的可靠性。
2. 學習設計模式的意義
設計模式的本質是物件導向設計原則的實際運用,是對類的封裝性、繼承性和多型性以及類的關聯關係和組合關係的充分理解。正確使用設計模式具有以下優點。
3.根據目的分類:
建立型模式:用於描述「怎樣建立物件」,它的主要特點是「將物件的建立與使用分離」。gof 中提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種建立型模式。
結構型模式:用於描述如何將類或物件按某種布局組成更大的結構,gof 中提供了**、介面卡、橋接、裝飾、外觀、享元、組合等 7 種結構型模式。
行為型模式:用於描述類或物件之間怎樣相互協作共同完成單個物件都無法單獨完成的任務,以及怎樣分配職責。gof 中提供了模板方法、策略、命令、職責鏈、狀態、觀察者、中介者、迭代器、訪問者、備忘錄、直譯器等 11 種行為型模式。
4.根據作用範圍分類:
類模式:用於處理類與子類之間的關係,這些關係通過繼承來建立,是靜態的,在編譯時刻便確定下來了。gof中的工廠方法、(類)介面卡、模板方法、直譯器屬於該模式。
物件模式:用於處理物件之間的關係,這些關係可以通過組合或聚合來實現,在執行時刻是可以變化的,更具動態性。gof 中除了以上 4 種,其他的都是物件模式。
建立型設計模式
單例(singleton)模式:某個類只能生成乙個例項,該類提供了乙個全域性訪問點供外部獲取該例項,其拓展是有限多例模式。
原型(prototype)模式:將乙個物件作為原型,通過對其進行複製而轉殖出多個和原型類似的新例項。
工廠方法(factory method)模式:定義乙個用於建立產品的介面,由子類決定生產什麼產品。
建造者(builder)模式:將乙個複雜物件分解成多個相對簡單的部分,然後根據不同需要分別建立它
結構型設計模式
**(proxy)模式:為某物件提供一種**以控制對該物件的訪問。即客戶端通過**間接地訪問該物件,從而限制、增強或修改該物件的一些特性。
介面卡(adapter)模式:將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。
橋接(bridge)模式:將抽象與實現分離,使它們可以獨立變化。它是用組合關係代替繼承關係來實現,從而降低了抽象和實現這兩個可變維度的耦合度。
裝飾(decorator)模式:動態的給物件增加一些職責,即增加其額外的功能。
外觀(facade)模式:為多個複雜的子系統提供乙個一致的介面,使這些子系統更加容易被訪問。
享元(flyweight)模式:運用共享技術來有效地支援大量細粒度物件的復用。
組合(composite)模式:將物件組合成樹狀層次結構,使使用者對單個物件和組合物件具有一致的訪問性。
行為型設計模式
模板方法(templatemethod)模式:定義乙個操作中的演算法骨架,而將演算法的一些步驟延遲到子類中,使得子類可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。
策略(strategy)模式:定義了一系列演算法,並將每個演算法封裝起來,使它們可以相互替換,且演算法的改變不會影響使用演算法的客戶。
命令(command)模式:將乙個請求封裝為乙個物件,使發出請求的責任和執行請求的責任分割開。
狀態(state)模式:允許乙個物件在其內部狀態發生改變時改變其行為能力。
觀察者(observer)模式:多個物件間存在一對多關係,當乙個物件發生改變時,把這種改變通知給其他多個物件,從而影響其他物件的行為。
中介者(mediator)模式:定義乙個中介物件來簡化原有物件之間的互動關係,降低系統中物件間的耦合度,使原有物件之間不必相互了解。
迭代器(iterator)模式:提供一種方法來順序訪問聚合物件中的一系列資料,而不暴露聚合物件的內部表示。
訪問者(visitor)模式:在不改變集合元素的前提下,為乙個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者物件訪問。
備忘錄(memento)模式:在不破壞封裝性的前提下,獲取並儲存乙個物件的內部狀態,以便以後恢復它。
直譯器(interpreter)模式:提供如何定義語言的文法,以及對語言句子的解釋方法,即直譯器。
設計模式總結
http www.chenjiliang.com article view.aspx?articleid 6708 比較 設計模式 常用程度 適用層次 引入時機 結構複雜度 abstract factory 比較常用 應用級設計時 比較複雜 builder 一般 級 編碼時一般 factory me...
設計模式總結
模式相關的描述 裝飾者 包裝乙個物件,以提供新的行為 狀態 封閉了基於狀態的行為,並使用委託在行為之間切換 迭代器 在物件的集合之間遊走,而不暴露集合的實現 外觀 簡化一群類的介面 策略 封閉可以互換的行為,並使用委託來決定要使用哪乙個 包裝物件,以控制對此物件的訪問 工廠方法 由子類來決定要建立的...
設計模式總結
這類模式的特質是管理物件的建立過程。通常設計總是以使用工廠方法開始,當設計者發現需要更大的靈活性時,設計會向其它建立型模式演化。工廠方法模式 單例模式 抽象工廠方法模式 建造者模式 原型模式 簡單工廠模式 這類模式從程式的結構上解決模組之間的耦合問題。介面卡模式 裝飾模式 橋接模式 組合模式 享元模...