簡單工廠 抽象工廠 工廠 建立型設計模式

2021-10-04 17:35:36 字數 2565 閱讀 7370

簡單工廠

了解

在建立乙個物件時不向客戶暴露內部細節,並提供乙個建立物件的通用介面

相當於乙個工廠有多種產品,建立在類中,當客戶使用時只需要知道產品類對應引數即可

原理

簡單工廠把例項化的操作單獨放到乙個類中,這個類就成為簡單工廠類,讓簡單工廠類來決定用哪個具體子類來例項化

這樣做能把客戶類和具體子類的實現解耦合,客戶類不再需要知道有哪些子類以及應當例項化哪個子類。客戶類往往有多個,如果不使用簡單工廠,那麼所有的客戶類都要知道所有子類的細節。而且一旦子類發生改變,例如增加子類,那麼所有的客戶類都要進行修改

實現

class

product

;class

concreteproduct

:public product

;class

concreteproduct1

:public product

;class

concreteproduct2

:public product

;//簡單工廠,被所有需要進行例項化的客戶類呼叫

class

******factory

else

if(type ==2)

return

newconcreteproduct()

;}};

class

client

};

工廠方法

了解

在簡單工廠中,建立物件的是另乙個類;而在工廠方法中,是由子類來建立物件

定義了乙個建立物件的介面,但由子類決定要例項化哪個類。工廠方法把例項化操作推遲到子類

原理

factory有乙個dosomething() 方法,這個方法需要用到乙個產品物件,這個產品物件由factorymethod()方法建立【該方法是抽象的,需要由子類去實現】

實現

class

factory};

class

concretefactory

:public factory };

class

concretefactory1

:public factory };

class

concretefactory2

:public factory

};

抽象工廠

了解

提供乙個介面,用於建立相關的物件家族

抽象工廠模式建立的是物件家族,也就是很多物件而不是乙個物件,並且這些物件是相關的,也就是說必須一起建立

工廠方法模式只是用於建立乙個物件,這和抽象工廠模式有很大不同

原理

抽象工廠模式用到了工廠方法模式來建立單一物件,abstractfactory中的createproducta()和createproductb()方法都是讓子類來實現,這兩個方法單獨來看就是在建立乙個物件,這符合工廠方法模式的定義

建立物件家族這一概念在client 體現,client 要通過abstractfactory同時呼叫兩個方法來建立出兩個物件,在這裡這兩個物件就有很大的相關性,client需要同時建立出這兩個物件,從高層次來看,抽象工廠使用了組合,即cilent組合了abstractfactory,而工廠方法模式使用了繼承

繼承表現為:is-a是乙個

組合表現為:has-a有乙個【不會破壞程式封裝性,維護起來更加簡單】

class

abstractproducta

;class

abstractproductb

;class

producta1

:abstractproducta

;class

producta2

:abstractproducta

;class

productb1

:abstractproductb

;class

productb2

:abstractproductb

;class

abstractfactory

;class

concretefactory1

:public abstractfactory

abstractproductb createproductb()

};class

concretefactory2

:public abstractfactory

abstractproductb createproductb()

};class

client

};

3 23 建立型設計模式 簡單工廠與抽象工廠

簡單工廠 工廠方法的使用,是乙個問題逐步演變的過程由簡單工廠 工廠方法。故在此合併梳理知識點。都是為了解決實際問題,在此我們現在假設一種業務場景,我們場景就不來雞鳴狗叫了 首先 我們現在用手機來做業務場景,現在又手機如下 蘋果 三星 華為 塞班。現在每一種手機存在乙個介面需要顯示手機的作業系統。基於...

設計模式 建立型 工廠方法 抽象工廠

工廠方法以及抽象工廠都是頻率出現比較高的設計模式,他們屬於建立型。英文 factory method 使用頻率 高 作用 定義乙個建立物件的介面,讓子類決定建立什麼樣的例項物件。說明 工廠類有時候不僅僅表現為建立乙個產品類並返回該產品類,他也可以表現為一種業務相關的類,並且自行維護這個建立的產品。比...

設計模式 建立型 工廠 簡單工廠模式

動態決定哪個類被例項化,不必事先知道哪個類要被例項化!三 舉例 qq裡面常用發表情的 1 表情 b new smile 這種應該是很熟悉的建立方式 2 表情 b 表情工廠.createbiaoqing 表情內容 四 角色與結構 工廠類角色 creator bqfctory,在creat方法下建立產品...