設計模式 工廠模式

2021-08-28 08:05:50 字數 1306 閱讀 3463

一、簡單工廠模式

1.1 描述 簡單工廠模式是由乙個工廠物件根據收到的訊息決定要建立哪乙個類的物件例項。

1.2 使用場景 工廠類負責建立的物件比較少,客戶只需要傳入工廠類引數,對於如何建立物件(邏輯)不關心。簡單工廠模式很容易違反高內聚低耦合的原則,因此一般只在很簡單的情況下使用。

1.3 優點 最大的優點在於工廠類中包含了必要的邏輯,根據客戶需要的邏輯動態例項化相關的類。

#include using namespace std;

//定義乙個基類

class inoodles

;//派生類1

class lznoodles :public inoodles

};//派生類2

class paonoodles :public inoodles

};//派生類3

class gankounoodles :public inoodles

};//工廠類

class ******factory

case 2:

case 3:

}}};

//主函式

int main()

1 它是乙個具體的類,非介面 抽象類。有乙個重要的create()方法,利用if或者 switch建立產品並返回。

2 create()方法通常是靜態的,所以也稱之為靜態工廠。

1 擴充套件性差(我想增加一種麵條,除了新增乙個麵條產品類,還需要修改工廠類方法)

2 不同的產品需要不同額外引數的時候 不支援。

二、工廠方法模式

提供乙個用於建立物件的介面(工廠介面),讓其實現類(工廠實現類)決定例項化哪乙個類(產品類),並且由該實現類建立對應類的例項。

可以一定程度上解耦,消費者和產品實現類隔離開,只依賴產品介面(抽象產品),產品實現類如何改動與消費者完全無關。

可以一定程度增加擴充套件性,若增加乙個產品實現,只需要實現產品介面,修改工廠建立產品的方法,消費者可以無感知(若消費者不關心具體產品是什麼的情況)。

可以一定程度增加**的封裝性、可讀性。清楚的**結構,對於消費者來說很少的**量就可以完成很多任務作。

等等。//todo

另外,抽象工廠才是實際意義的工廠模式,工廠方法只是抽象工廠的乙個比較常見的情況。

消費者不關心它所要建立物件的類(產品類)的時候。

消費者知道它所要建立物件的類(產品類),但不關心如何建立的時候。

等等。//todo

例如:hibernate裡通過sessionfactory建立session、通過**方式生成ws客戶端時,通過工廠構建報文中格式化資料的物件。

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...