1、什麼是設計模式? 設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。 設計模式是一套被反覆使用的、多數人知 ...
1、什麼是設計模式?
設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。
設計模式是一套被反覆使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使代碼編製真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。
2、設計模式的使用?
- 開發人員的共同平臺
- 最佳的實踐
3、設計模式的類型?
23個設計模式可分為三種類型的設計模式:創建型模式(Creational Patterns)、結構型模式(Structural Patterns)、行為型模式(Behavioral Patterns)。
4、設計模式的分類
創建型模式(Creational Patterns)
描述:這些設計模式提供了一種在創建對象的同時隱藏創建邏輯的方式,而不是使用 new 運算符直接實例化對象。這使得程式在判斷針對某個給定實例需要創建哪些對象時更加靈活。
包括的模式:
- 工廠模式(Factory Pattern)
- 抽象工廠模式(Abstract Factory Pattern)
- 單例模式(Singleton Pattern)
- 建造者模式(Builder Pattern)
- 原型模式(Prototype Pattern)
1. 工廠模式(Factory Pattern)
定義:定義了一個創建對象的抽象方法,由子類決定要實例化的類。工廠方法模式將對象的實例化推遲到子類。
2. 抽象工廠模式(Abstract Factory Pattern)
定義:定義了一個介面用於創建相關或有依賴關係的對象族,而無需明確指定具體類。
3. 單例模式(Singleton Pattern)
定義:確保一個類最多只有一個實例,並提供一個全局訪問點。
4. 建造者模式(Builder Pattern)
定義:封裝一個複雜對象構造過程,並允許按步驟構造。
5. 原型模式(Prototype Pattern)
定義:通過複製現有實例來創建新的實例,無需知道相應類的信息。(Clone機制)
結構型模式(Structural Patterns)
描述:主要用於如何組合已有的類和對象來獲得更大的結構,它採用繼承機制來組合介面或實現,以提供統一的外部視圖或新的功能
包括的模式:
- 適配器模式(Adapter Pattern)
- 橋接模式(Bridge Pattern)
- 組合模式(Composite Pattern)
- 裝飾器模式(Decorator Pattern)
- 外觀模式(Facade Pattern)
- 享元模式(Flyweight Pattern)
- 代理模式(Proxy Pattern)
1. 適配器模式(Adapter Pattern)
定義:將某個類的介面轉換成客戶端期望的另一個介面表示,目的是消除由於介面不匹配所造成的類的相容性問題。
2. 橋接模式(Bridge Pattern)
定於:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
3. 組合模式(Composite Pattern)
定義:有時又叫作部分-整體模式,它是一種將對象組合成樹狀的層次結構的模式,用來表示“部分-整體”的關係,使用戶對單個對象和組合對象具有一致的訪問性。
4. 裝飾器模式(Decorator Pattern)
定義:動態地給一個對象添加額外的職責,它提供了用子類擴展功能的一個靈活的替代,比派生一個子類更加靈活。
5. 外觀模式(Facade Pattern)
定義:定義一個高層介面,為子系統中的一組介面提供一個一致的外觀,從而簡化了該子系統的使用。
6. 享元模式(Flyweight Pattern)
定義:通過共用的方式高效的支持大量細粒度的對象。
7. 代理模式(Proxy)
定義:代理模式給某一個對象提供一個代理對象,並由代理對象控制對原對象的引用。通俗的來講代理模式就是我們生活中常見的中介。
行為型模式(Behavioral Patterns)
描述:這些設計模式特別關註對象之間的通信。
包括模式:
- 責任鏈模式(Chain of Responsibility Pattern)
- 命令模式(Command Pattern)
- 解釋器模式(Interpreter Pattern)
- 迭代器模式(Iterator Pattern)
- 中介者模式(Mediator Pattern)
- 備忘錄模式(Memento Pattern)
- 觀察者模式(Observer Pattern)
- 狀態模式(State Pattern)
- 策略模式(Strategy Pattern)
- 模板模式(Template Pattern)
- 訪問者模式(Visitor Pattern)
1. 責任鏈模式(Chain of Responsibility Pattern)
定義:如果有多個對象有機會處理請求,責任鏈可使請求的發送者和接受者解耦,請求沿著責任鏈傳遞,直到有一個對象處理了它為止。
2. 命令模式(Command Pattern)
定義:將一個請求封裝為一個對象,使發出請求的責任和執行請求的責任分割開。這樣兩者之間通過命令對象進行溝通,這樣方便將命令對象進行儲存、傳遞、調用、增加與管理。
3. 解釋器模式(Interpreter Pattern)
定義:給定一種語言,定義它的文法表示,並定義一個解釋器,該解釋器用來根據文法表示來解釋語言中的句子。
4. 迭代器模式(Iterator Pattern)
定義:提供一種方法順序訪問一個聚合對象中各個元素, 而又無須暴露該對象的內部表示。
5. 中介者模式(Mediator Pattern)
定義:定義一個中介對象來封裝一系列對象之間的交互,使原有對象之間的耦合鬆散,且可以獨立地改變它們之間的交互。中介者模式又叫調停模式,它是迪米特法則的典型應用。
6. 備忘錄模式(Memento Pattern)
定義:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,併在該對象之外保存這個狀態,以便以後當需要時能將該對象恢復到原先保存的狀態。該模式又叫快照模式。
7. 觀察者模式(Observer Pattern)
定義:定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。
8. 狀態模式(State Pattern)
定義:允許一個對象在其內部狀態改變時改變它的行為。
9. 策略模式(Strategy Pattern)
定義:定義了一系列演算法,並將每個演算法封裝起來,使他們可以相互替換,且演算法的變化不會影響到使用演算法的客戶。
10. 模板方法模式(Template Method Pattern)
定義:定義一個操作中演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變演算法的結構即可重定義該演算法的某些特定步驟。
11. 訪問者模式(Visitor Pattern)
定義:表示一個作用於某對象結構中的個元素的操作,使得在不改變各元素的類的前提下定義作用於這些元素的新操作。