23種設計模式 七 物件建立之工廠方法

2021-10-09 23:12:03 字數 2703 閱讀 8582

23種設計模式(二)元件協作之模板方法

23種設計模式(三)元件協作之策略模式

23種設計模式(四)元件協作之觀察者模式

23種設計模式(五)單一職責之裝飾模式

23種設計模式(六)單一職責之橋模式

23種設計模式(七)物件建立之工廠方法

23種設計模式(八)物件建立之抽象工廠

23種設計模式(九)物件建立之原型模式

23種設計模式(十)物件建立之構建器

23種設計模式(十一)物件效能之單件模式

23種設計模式(十二)物件效能之享元模式

23種設計模式(十三)介面隔離之門面模式

23種設計模式(十四)介面隔離之**模式

23種設計模式(十五)介面隔離之介面卡

23種設計模式(十六)介面隔離之中介者

23種設計模式(十七)狀態變化之狀態模式

23種設計模式(十八)狀態變化之備忘錄

23種設計模式(十九)資料結構之組合模式

23種設計模式(二十)資料結構之迭代器

23種設計模式(二十一)資料結構之職責鏈

23種設計模式(二十二)行為變化之命令模式

23種設計模式(二十三)行為變化之訪問器

23種設計模式(二十四)領域規則之解析器

通過「物件建立」 模式繞開new,來避免物件建立(new)過程

中所導致的緊耦合(依賴具體類),從而支援物件建立的穩定。它

是介面抽象之後的第一步工作。

在軟體系統中,經常面臨著建立物件的工作;由於需求的變化,需要建立的物件的具體型別經常變化。

class

isplitter};

class

binarysplitter

:public isplitter

;class

txtsplitter

:public isplitter

;class

picturesplitter

:public isplitter

;class

videosplitter

:public isplitter

;

上述**是面向介面程式設計工作的一部分。之前所說的模式都有乙個抽象基類,之後採用isplitter * splitter= new binarysplitter();方式實現面向介面程式設計。

class

mainform

:public form

};

面向介面程式設計最簡單的乙個表現形式就是變數要宣告成抽象基類。

這裡mainform1中的isplitter * splitter是依賴於抽象,但是new binarysplitter();依賴於細節同樣不行。

如何應對這種變化?如何繞過常規的物件建立方法(new),提供一種「封裝機制」來避免客戶程式和這種「具體物件建立工作」的緊耦合?

那能不能用一種方法來返回乙個物件:

//抽象類

class

isplitter};

//工廠基類

class

splitte***ctory

};

//具體類

class

binarysplitter

:public isplitter

;class

txtsplitter

:public isplitter

;class

picturesplitter

:public isplitter

;class

videosplitter

:public isplitter

;//具體工廠

class

binarysplitte***ctory

:public splitte***ctory};

class

txtsplitte***ctory

:public splitte***ctory};

class

picturesplitte***ctory

:public splitte***ctory};

class

videosplitte***ctory

:public splitte***ctory

};

class

mainform

:public form

void

button1_click()

};

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使得乙個類的例項化延遲(目的:解耦,手段:虛函式)到子類。

factory method模式用於隔離類物件的使用者和具體型別之間的耦合關係。面對乙個經常變化的具體型別,緊耦合關係(new)會導致軟體的脆弱。

factory method模式通過物件導向的手法,將所要建立的具體物件工作延遲到子類,從而實現一種擴充套件(而非更改)的策略,較好地解決了這種緊耦合關係。

factory method模式解決「單個物件」的需求變化。缺點在於要求建立方法/引數相同。

23種設計模式 十 物件建立之構建器

23種設計模式 二 元件協作之模板方法 23種設計模式 三 元件協作之策略模式 23種設計模式 四 元件協作之觀察者模式 23種設計模式 五 單一職責之裝飾模式 23種設計模式 六 單一職責之橋模式 23種設計模式 七 物件建立之工廠方法 23種設計模式 八 物件建立之抽象工廠 23種設計模式 九 ...

23種設計模式 九 物件建立之原型模式

23種設計模式 二 元件協作之模板方法 23種設計模式 三 元件協作之策略模式 23種設計模式 四 元件協作之觀察者模式 23種設計模式 五 單一職責之裝飾模式 23種設計模式 六 單一職責之橋模式 23種設計模式 七 物件建立之工廠方法 23種設計模式 八 物件建立之抽象工廠 23種設計模式 九 ...

23種設計模式之 工廠模式

android中,工廠模式分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式。一.簡單工廠模式。定義 簡單工廠模式又叫靜態方法模式 因為工廠類定義了乙個靜態方法 簡單工廠模式可以理解為負責生產物件的乙個類,稱為 工廠類 我們主要講的就是簡單工廠模式,其他兩種也是簡單工廠模式的衍生 我們在專案中經常使...