下面例子中滑鼠,鍵盤,耳麥為產品,惠普,戴爾為工廠。
簡單工廠模式不是 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 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...