工廠設計模式

2021-08-28 21:46:19 字數 3160 閱讀 9131

下面例子中滑鼠,鍵盤,耳麥為產品,惠普,戴爾為工廠。

簡單工廠模式不是 23 種裡的一種,簡而言之,就是有乙個專門生產某個產品的類。

比如下圖中的滑鼠工廠,專業生產滑鼠,給引數 0,生產戴爾滑鼠,給引數 1,生產惠普滑鼠。

#include //簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(static factory method)模式,簡單工廠模式是由乙個工廠物件決定建立出來哪一種產品類的例項.

////簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪一類產品類(這些產品類繼承自乙個父類或介面)的例項。打個比方

////假設有乙個工廠,他能生產出a、b兩種產品。當客戶需要產品的時候一定要告訴共產是哪種產品,是a還是b。當新增加一種新產品的時候,那麼就要去修改工廠的類。

enum producttype

;// 1. 共同類

class mouse

;// 2. 實現類

class mouse_dell:public mouse

private:

};class mouse_hp:public mouse

private:

};// 3.工廠類

class factory

return 0;

}};// 簡單工廠模式的缺點是當新增產品的時候就要去修改工廠的類,這就違反了開放封閉原則。(類、模組、函式)可以擴充套件,但是不可以修改。

int _tmain(int argc, _tchar* argv)

工廠模式也就是滑鼠工廠是個父類,有生產滑鼠這個介面。

戴爾滑鼠工廠,惠普滑鼠工廠繼承它,可以分別生產戴爾滑鼠,惠普滑鼠。

生產哪種滑鼠不再由引數決定,而是建立滑鼠工廠時,由戴爾滑鼠工廠建立。

後續直接呼叫滑鼠工廠.生產滑鼠()即可

#include //所謂工廠方法模式,是指定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。打個比方

//現在有a、b兩種產品,那麼就開兩個工廠。工廠a負責生產a產品,工廠b負責生產b種產品。

//這時候客戶不需要告訴工廠生產哪種產品了,只需要告訴工廠生產就可以了。

// 純虛類

class product

;// product實現類

class producta:public product

};class productb:public product

};// 工廠純虛類

class factory

;// 工廠實現類

class factorya :public factory

};class factoryb : public factory

};int _tmain(int argc, _tchar* argv)

抽象工廠模式也就是不僅生產滑鼠,同時生產鍵盤。

也就是 pc 廠商是個父類,有生產滑鼠,生產鍵盤兩個介面。

戴爾工廠,惠普工廠繼承它,可以分別生產戴爾滑鼠+戴爾鍵盤,和惠普滑鼠+惠普鍵盤。

建立工廠時,由戴爾工廠建立。

後續工廠.生產滑鼠()則生產戴爾滑鼠,工廠.生產鍵盤()則生產戴爾鍵盤。

在抽象工廠模式中,假設我們需要增加乙個工廠

假設我們增加華碩工廠,則我們需要增加華碩工廠,和戴爾工廠一樣,繼承 pc 廠商。

之後建立華碩滑鼠,繼承滑鼠類。建立華碩鍵盤,繼承鍵盤類即可。

在抽象工廠模式中,假設我們需要增加乙個產品

假設我們增加耳麥這個產品,則首先我們需要增加耳麥這個父類,再加上戴爾耳麥,惠普耳麥這兩個子類。

之後在pc廠商這個父類中,增加生產耳麥的介面。最後在戴爾工廠,惠普工廠這兩個類中,分別實現生產戴爾耳麥,惠普耳麥的功能。 以上。

;// 純虛產品類

class mouse

;class keyboard

;// 產品實現類

class mouse_dell:public mouse

};class keyboard_dell :public keyboard

};class mouse_hp :public mouse

};class mouse_asus :public mouse

};class keyboard_cherry :public keyboard

};class keyboard_logith :public keyboard

};// 純虛工廠類

class factory

;// 實現工廠類

// 根據品牌生成產品

class factory_mouse :public factory

}keyboard* productkeyboard(brandtype ntype)

};// 根據品牌生成產品

class factory_keyboard :public factory

keyboard* productkeyboard(brandtype ntype)

}};int _tmain(int argc, _tchar* argv)

設計模式 工廠設計模式

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

設計模式 工廠設計模式

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

設計模式 工廠模式(簡單工廠)

一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...