「物件建立」模式
通過「物件建立」模式繞開new,來避免物件(new)過程中所導致的緊耦合(依賴具體類),從而支援物件建立的穩定,他是介面之後的第一步工作
典型模式
•factory method
•abstract factory
•prototype
•builder
動機在軟體系統中,經常面臨著建立物件的工作,由於需求的變化,需要建立的物件的具體型別經常變化
如何應對這種變化?如何繞過常規的物件建立方法(new),提供一種「封裝機制」來避免客戶程式和這種「具體物件創作「的緊耦合?
模板定義
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使得乙個類的例項化延遲(目的:解耦,手段:虛函式)到子類
問題**
class
isplitter};
class
binarysplitter
:public isplitter
;class
txtsplitter
:public isplitter
;class
picturesplitter
:public isplitter
;class
videosplitter
:public isplitter
;class
mainform
:public form
};
我們可以看上面的**,我們發現我們在建立的物件的時候,有了具體依賴的類,他是不斷變化的,我們這塊就違背了依賴倒置原則,我們依託乙個變化的類,極大的阻止了我們的擴充套件,所以我們很快就能想到多型,用多型指標來完成這個變化
//抽象類
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模式用於隔離類物件的使用者和具體型別之間的
耦合關係。面對乙個經常變化的具體型別,緊耦合關係(new)會導
致軟體的脆弱。
factory method模式通過物件導向的手法,將所要建立的具體對
象工作延遲到子類,從而實現一種擴充套件(而非更改)的策略,較好
地解決了這種緊耦合關係。
factory method模式解決「單個物件」的需求變化。缺點在於要
求建立方法/引數相同。
「物件建立」模式 抽象工廠
動機 在軟體系統中,經常面臨著 一系列相互依賴的物件 的建立工作,同時由於需求的變化,往往存在更多系列物件的建立物件 如何應對這種變化,如何繞過常規的物件建立方法 new 提供一種 封裝機制 來避免客戶程式和這種 多系列具體物件建立工作 的緊耦合 模式定義 提供乙個介面,讓該介面負責建立一系列 相關...
建立模式 抽象工廠模式
一 抽象工廠模式說明 抽象工廠模式更符合我們的日常生活和一般規律,所以,應用更加廣泛。下圖舉例說明了抽象工廠模式 抽象工廠模式設計 根據上圖的描述,抽象工廠模式可以設計如下 packagecom.solid.abstractfactory 抽象工廠模式 產品介面一 author solid publ...
「物件建立」模式
定義 通過 物件建立 模式繞開new,來避免物件建立 new 過程中所導致的緊耦合 依賴具體類 從而支援物件的穩定。它是介面抽象之後的第一步工作。在軟體系統中,經常面臨著建立物件的工作 由於需求的變化,需要建立的物件的具體型別經常變化。如何應對這種變化?如何繞過常規的物件建立方法 new 提供一種 ...