GoF設計模式一共有23個。通常能夠按目的和做用範圍來進行劃分,具體劃分方法以下:設計模式
第一,這些模式按目的(即完成什麼樣任務)來劃分爲建立型、結構型和行爲型這三種模式:ui
建立型:用來建立對象。單例、原型、抽象工廠、建造者、工廠方法這五個都屬於這一分類。這種類別起到了將對象的建立與其使用進行分離解耦。spa
結構型:用來處理類或對象之間如何組合以構成更大的結構體。橋接、裝飾、適配器、代理、外觀、享元、組合這七個屬於這一類。設計
行爲型:用來處理類或對象之間如何交互和分配職責。模板方法、解釋器、策略、命令、職責鏈、狀態、觀察者、中介者、迭代器、訪問者、備忘錄這11個屬於這一類。代理
第二,按其是用到類上仍是對象上來劃分,能夠分爲類和對象兩種模式。server
類模式:主要用來處理類與其子類之間繼承關係,這種關係是編譯時肯定的,運行時是靜態和不變的。工廠方法、模板方法、(類)適配器、解釋器這四個屬於這一種。對象
對象模式:用於處理對象之間的組合或者聚合關係,運行時能夠變化,是動態的。其餘的19種都屬於這一模式。具體見下圖。繼承
將這兩種分類方法做爲縱橫方向,能夠將具體的模式分類列一個表以下。ci
23種GoF設計模式分類表pdo |
|||
目的 範圍 |
建立型/Creational |
結構型/Structural |
行爲型/Behavioural |
類型/Class |
工廠方法/Factory Method |
適配器(類)/Adapter(class) |
解釋器/Interpreter 模板方法/Template method |
對象型/Object |
單例/Singleton 原型/Prototype 抽象工廠/Abstract Factory 建造者/Builder |
橋接/Bridge 裝飾/Decorator 代理/Proxy 外觀/Facade 享元/Flyweight 組合/Composite 適配器(對象)/Adapter(object) |
職責鏈/Chain of Responsibility 命令/Command 觀察者/Observer 中介者/Mediator 狀態/State 訪問者/Visitor 迭代器/Iterator 備忘錄Memento 策略/Strategy |
注意:通常初學者,由於記起來比較難記,本人原來是按照取每種模式的第一個字的諧音構成一句話來記憶,後面帶有中劃線的斜體的是類模式,雖然說有些不正經、可是效果明顯。若是深刻理解了,就會很天然地根據名字劃分,不須要這麼記憶。
建立型:單元抽建法 ——> 單例、原型、抽象工廠、建造者、工廠方法。
結構型:喬裝(後)呆(在)外(面)像祖師(爺) ——> 橋接、裝飾、代理、外觀、享元、組合、適配器(對象或者類)
行爲型:除過前面的都是行爲型。或者以下:
知名觀衆裝碟防被測(試帶有)芥末 ——> 職責鏈、命令、觀察者、中介者、狀態、迭代器、訪問者、備忘錄、策略、解釋器、模板方法。