GoF設計模式一共有23個。一般可以按目的和作用範圍來進行劃分,具體劃分方法如下: 第一,這些模式按目的(即完成什麼樣任務)來劃分為創建型、結構型和行為型這三種模式: 創建型:用來創建對象。單例、原型、抽象工廠、建造者、工廠方法這五個都屬於這一分類。這種類別起到了將對象的創建與其使用進行分離解耦。 ...
GoF設計模式一共有23個。一般可以按目的和作用範圍來進行劃分,具體劃分方法如下:
第一,這些模式按目的(即完成什麼樣任務)來劃分為創建型、結構型和行為型這三種模式:
創建型:用來創建對象。單例、原型、抽象工廠、建造者、工廠方法這五個都屬於這一分類。這種類別起到了將對象的創建與其使用進行分離解耦。
結構型:用來處理類或對象之間如何組合以構成更大的結構體。橋接、裝飾、適配器、代理、外觀、享元、組合這七個屬於這一類。
行為型:用來處理類或對象之間如何交互和分配職責。模板方法、解釋器、策略、命令、職責鏈、狀態、觀察者、中介者、迭代器、訪問者、備忘錄這11個屬於這一類。
第二,按其是用到類上還是對象上來劃分,可以分為類和對象兩種模式。
類模式:主要用來處理類與其子類之間繼承關係,這種關係是編譯時確定的,運行時是靜態和不變的。工廠方法、模板方法、(類)適配器、解釋器這四個屬於這一種。
對象模式:用於處理對象之間的組合或者聚合關係,運行時可以變化,是動態的。其他的19種都屬於這一模式。具體見下圖。
將這兩種分類方法作為縱橫方向,可以將具體的模式分類列一個表如下。
23種GoF設計模式分類表 |
|||
目的 範圍 |
創建型/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 |
註意:一般初學者,因為記起來比較難記,本人原來是按照取每種模式的第一個字的諧音構成一句話來記憶,後面帶有中劃線的斜體的是類模式,雖說有些不正經、但是效果明顯。如果深入理解了,就會很自然地根據名字劃分,不需要這麼記憶。
創建型:單元抽建法 ——> 單例、原型、抽象工廠、建造者、工廠方法。
結構型:喬裝(後)呆(在)外(面)像祖師(爺) ——> 橋接、裝飾、代理、外觀、享元、組合、適配器(對象或者類)
行為型:除過前面的都是行為型。或者如下:
知名觀眾裝碟防被測(試帶有)芥末 ——> 職責鏈、命令、觀察者、中介者、狀態、迭代器、訪問者、備忘錄、策略、解釋器、模板方法。