(1)首先了解下簡(jiǎn)單工廠模式斩萌。如圖:
簡(jiǎn)單工廠模式圖1-1
工廠類一般用于生產(chǎn)其他對(duì)象缝裤。舉個(gè)例子,有個(gè)雪糕工廠可以創(chuàng)建各種雪糕颊郎,不用每次需要造一個(gè)雪糕時(shí)先建一個(gè)工廠吧憋飞,都是用現(xiàn)成的工廠直接生產(chǎn)。
簡(jiǎn)單工廠類姆吭,根據(jù)傳的字符串不同榛做,會(huì)創(chuàng)建不同的對(duì)象。此時(shí)有個(gè)嚴(yán)重的缺點(diǎn)就是内狸,我增加一種運(yùn)算检眯,就要手動(dòng)修改簡(jiǎn)單工廠類,這樣是違背了開閉原則昆淡。
為什么說違背開閉原則锰瘸?
? 簡(jiǎn)單工廠類里面有創(chuàng)建對(duì)象的邏輯,當(dāng)增加之前沒有的對(duì)象時(shí)昂灵,需要增加邏輯代碼避凝。此時(shí)運(yùn)算類的getResult()只有四種運(yùn)算舞萄,如果我要增加取余數(shù)運(yùn)算,也需要改此代碼管削。
(2)工廠方法模式:定義了一個(gè)用于創(chuàng)建對(duì)象的接口倒脓,讓子類決定實(shí)例化哪一個(gè)類。工廠方法使一個(gè)類的實(shí)例化延遲到其子類含思。
使用工廠方法改造圖1-1:
工廠方法模式圖2-1
仔細(xì)觀察會(huì)發(fā)現(xiàn):工廠方法模式實(shí)現(xiàn)時(shí)崎弃,客戶端需要決定實(shí)例化哪一個(gè)工廠來實(shí)現(xiàn)運(yùn)算類,選擇判斷的問題從簡(jiǎn)單工廠遷移到客戶端了茸俭。