本文介紹設計模式中的工廠模式。工廠模式,顧名思義,就是本來我們需要某樣東西,需要自己造,可有了工廠呢?我需要該東西時,只需告訴工廠,工廠就會生產該東西,一定程度上,把使用者和生產者分開了。。。解耦了。
追本溯源,假設我們現在有乙個類a,類a裡需要類b的乙個物件,一般的處理是這樣,b b=new b();但這樣有些問題,就是a,b關係太緊密了,把情況複雜一點,萬一類b構造起來太麻煩呢,就比如,你想用乙個木棍,你可以自己造,可萬一你想用乙個原子彈呢,你就造不出來了,哈哈,就是說,當你使用的物件構造比較麻煩或者這個物件會被替換為其他型別的物件是,就需要頻繁的更改類a了,這違反了設計原則(什麼開閉,高內聚,低耦合啥的,我也忘了。。。。)一般這種情況下,設計模式就出場了。
工廠模式有三種,簡單工廠,工廠方法,抽象工廠。在我看來,這三者是一步一步公升級的節奏:
簡單工廠:只有乙個實際工廠,這個工廠只能造一類的產品,這一類產品就是乙個產品介面,會有多個具體產品實現這個介面,例如,乙個手機廠,生產蘋果手機,三星手機;
工廠方法:比簡單工廠高階一點了,乙個工廠的介面,多個工廠實現這個工廠介面,乙個產品介面,多個具體產品實現這個產品介面,例如,乙個手機廠介面,有蘋果手機廠,三星手機廠兩個具體工廠,蘋果手機廠生產蘋果手機,三星手機廠生產三星手機;
抽象工廠:更高階了,前兩種工廠,說到底都只能生產一類產品(都是手機),抽象工廠支援多種型別的產品。乙個工廠介面,多個具體工廠,多個產品介面,多個具體產品,例如,電器廠介面,有三星廠和蘋果廠兩個具體工廠,三星廠生產三星手機,三星電腦,蘋果廠生產蘋果手機,蘋果電腦。
所以,設計模式沒什麼,都是生活中的智慧型,在生活裡就可以看到這些模式,留心就好。
至於其他什麼工廠模式的**,uml圖什麼的,懂了上述的原理,自然也就不成問題了,還有工廠模式的使用情景,網上也是一抓一大把的。。。。
三種工廠模式
include include include using namespace std class operation double geta const double getb const void seta double x void setb double y virtual double g...
三種工廠模式
簡單工廠模式不是23種裡的一種,簡而言之,就是有乙個專門生產某個產品的類。比如下圖中的滑鼠工廠,專業生產滑鼠,給引數0,生產戴爾滑鼠,給引數1,生產惠普滑鼠。工廠模式也就是滑鼠工廠是個父類,有生產滑鼠這個介面。戴爾滑鼠工廠,惠普滑鼠工廠繼承它,可以分別生產戴爾滑鼠,惠普滑鼠。生產哪種滑鼠不再由引數決...
三種工廠模式
include 簡單工廠模式 沒有開閉原則 需要自己去判斷建立了什麼類 class abstractfruit class pear public abstractfruit class peach public abstractfruit 定義水果工廠 class factory else if ...