標籤:執行個體 規範 靈活 菜鳥 過程 綜述 通知 上傳 責任鏈模式
設計原則是規範,設計模式是技巧。如果在項目中能夠靈活運用這些基礎知識,那麼我相信一定會得到意想不到的收穫。
接下來的時間裡,我將繼續學習設計模式,將對每一個設計模式從以下幾點進行分析和學習,如有不妥當或者理解錯誤的地方,歡迎大家指正和批評:
(1) 定義:描述該模式是什麼,有什麼樣的作用;
(2) 問題描述:該模式是針對什麼樣的問題而出現的,由開發中遇到的問題而引入;
(3) 解決方案:給出合適的解決方案,進一步解釋該模式的定義;
(4) 結構圖:根據定義,繪製相關栗子的UML結構圖;
(5) 舉個栗子:給出具體的執行個體,進一步說明該模式的實現方式;
(6) 優缺點:系統地分析該模式的優缺點;
(7) 適用情境:綜上所述,總結該模式的使用情境。
先總體瞭解一下24種設計模式的定義吧,對這些設計模式先有一個大致的印象:
1. 簡單原廠模式:通過專門定義一個工廠類來負責建立其它類的執行個體,而被建立的執行個體通常都擁有共同的父類。
2. Factory 方法模式:定義一個建立產品對象的工廠介面,將實際建立工作延遲到子類當中。
3. 抽象原廠模式:為建立一組相關的或相互依賴的對象提供一個介面,而無需指定他們的具體類。
4. 單例模式:一個類有且僅有一個執行個體,並且自行執行個體化向整個系統提供。
5. 原型模式:使用原型執行個體指定建立對象的種類,並且通過拷貝這些原型建立新的對象。
6. 建造者模式:將一個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示。
7. 適配器模式:將一個類的介面變換成用戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。
8. 橋接模式:將抽象和實現解耦,使兩者可以獨立的變化。
9. 組合模式:將對象組合成樹形結構以表示“部分-整體”的階層,使得使用者對單個對象和組合對象的使用具有一致性。
10. 裝飾模式:在不必改變原類檔案和使用繼承的情況下,動態地擴充一個對象的功能。
11. 面板模式:為子系統中的一組介面提供一個一致的介面,定義一個高層介面,這個介面使得這一子系統更加容易使用。
12. 享元模式:運用共用技術有效地支援大量細粒度的對象。
13. 代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
14. 責任鏈模式:很多個物件由每個對象對其下家額引用而串連起來形成一條鏈,請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求為止,從而避免請求的寄件者和接受者之間的耦合關係。
15. 命令模式:將一組行為抽象為對象,實現二者之間的松耦合。
16. 解譯器模式:提供了評估語言的文法或運算式的方式,實現了一個運算式介面,該介面解釋一個特定的上下文。
17. 迭代器模式:提供一種方法順序訪問一個彙總對象中的各種元素,而又不暴露該對象的內部表示。
18. 中介者模式:使用一個中介對象封裝一系列的對象互動,中介者使各個對象不需要顯示地相互作用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。
19. 備忘錄模式:在不破壞封閉的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態,以便以後將此對象恢複到原先的儲存狀態。
20. 觀察者模式:對象間的一種一對多的依賴關係,以便一個對象的狀態發生變化時,所有依賴於它的對象都得到通知並自動重新整理。
21. 狀態模式:允許一個對象在其內部狀態改變時改變它的行為,對象看起來好像修改了它的類。
22. 策略模式:定義了一系列的演算法,並將每一個演算法封裝起來,而且使它們還可以相互替換,讓演算法獨立於使用它的客戶而獨立變化。
23. 模板方法模式:在父類中定義了一個操作演算法的架構,而將一些步驟延遲到子類中去實現,使得子類在不改變一個演算法的架構結構可重定義該演算法的一些特定步驟。
24. 訪問者模式:封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這引起元素的新的操作。
參考資料:百度百科
設計模式|菜鳥教程
設計模式開篇綜述(Java)