1、什麼是設計模式
模式的定義:模式是一種問題的解決思路,它已經適用於一個實踐環境,並且可以適用於其他壞境。
設計模式通常是對於某一類的軟件設計問題的可重用的解決方案,將設計模式引入軟件設計和開發過程,其目的就在於要充分利用已有的軟件開發經驗。
2、設計模式的作用(或者爲什麼要用設計模式)
(1) 重用設計,重用設計比重用代碼更有意義,它會自動帶來代碼的重用。【代碼複用】
(2) 爲設計提供共用的詞彙,每個模式名就是一個設計詞彙,其概念使得程序員間的交流更加方便。【方便交流】
(3) 在開發文檔中採用模式詞彙可以讓其他人更容易理解你的想法,理解爲什麼你會這樣做,你都做了些什麼。
編寫開發文檔也更加容易。【易懂】
(4) 應用設計模式可以讓重構系統變得容易,可確保開發正確的代碼,並降低在設計或實現中出現錯誤的可能性,還可以爲重寫其他應用程序 提供很好的系統框架。【結構清晰】
(5) 正確使用設計模式,可以節省大量的時間。【省時】
按目的準則分類
(1) Creational (創建型):與對象創建有關。
簡單工廠模式(Simple Factory);工廠方法模式(Factory Method);抽象工廠模式(Abstract Factory);
創建者模式(Builder);原型模式(Prototype);單例模式(Singleton)。
(2) Structural (結構型):處理類或對象的組合。
外觀模式(Facade);適配器模式(Adapter);代理模式(Proxy);裝飾模式(Decorator);橋模式(Bridge);組合模式(Composite);享元模式(Flyweight)。
(3) Behavioral (行爲型):描述類或對象如何交互及如何分配職責。
模板方法模式(Template Method);觀察者模式(Observer);狀態模式(State);策略模式(Strategy);
職責鏈模式(Chain of Responsibility);命令模式(Command);訪問者模式(Visitor);調停者模式(Mediator);
備忘錄模式(Memento);迭代器模式(Iterator);解釋器模式(Interpreter)。
根據範圍準則分類
(1) 類模式:用於處理類和子類之間的關係,這些關係通過繼承建立,是靜態的,在編譯時就已經確定下來了。因爲從某種意義上說,幾乎所有模 式都是使用繼承機制,因此此處的“類模式”是指集中處理類間關係的模式,只有很少部分模式屬於此類。
(2) 對象模式:用於處理對象間的關係,這些關係具有動態性,在運行期間是可以變化的。
範圍\目的 | Creational (創建型) | Structural (結構型) | Behavioural (行爲型) |
類 | Simple Factory | Adapter (class) | Interpreter |
Factory Method | Template method | ||
對象 | Abstract Factory | Adapter (object) | Chain of Responsibility |
Builder | Bridge | Command | |
Prototype | Composite | Iterator | |
Singleton | Decorator | Mediator | |
Facade | Memento | ||
Flyweight | Observer | ||
Proxy | State | ||
Strategy | |||
Visitor |