java工廠方法模式

1.因?yàn)楹?jiǎn)單工廠模式設(shè)計(jì)增加功能時(shí)要修改工廠類,這不符合開閉原則所以要進(jìn)行改進(jìn)成為工廠方法模式

2.工廠方法模式的定義:

(1):定義一個(gè)用于創(chuàng)建對(duì)象的接口,但是讓子類決定將哪一個(gè)類實(shí)例化.工廠方法模式讓一個(gè)類的實(shí)例化延遲到其子類.
(2)工廠父類負(fù)責(zé)定義創(chuàng)建產(chǎn)品對(duì)象的公共接口,而工廠子類則負(fù)責(zé)生成具體的產(chǎn)品對(duì)象.目的是將產(chǎn)品的實(shí)例化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應(yīng)該實(shí)例化哪一個(gè)具體的產(chǎn)品類.

3.這里給出一工廠方法模式的UML類圖

FactoryMethod1.png

4.分析工廠方法模式的結(jié)構(gòu)

工廠方法模式包含以下4個(gè)角色:
(1)Product(抽象產(chǎn)品)
(2)ConcreteProduct(具體產(chǎn)品)
(3)Factory(抽象工廠)
(4)ConcreteFactory(具體工廠)

5.工廠方法模式代碼實(shí)現(xiàn)

public interface Factory {
    public Product factoryMethod();
}

public class ConcreteFactory implements Factory {
    public Product factoryMethod() {
        return new ConcreteProduct();
    }
}
public class Client {
    public static void main(String[] args) {
        Factory factory;
                //可通過配置文件和反射機(jī)制實(shí)現(xiàn)(我這里用的xml)
                factory = new ConcreteFactory(); 
                //這個(gè)抽象類我這里就沒有附加代碼,這個(gè)到這里應(yīng)該看的懂
                Product product;
                //多態(tài)
                product = factory.factoryMethod();      
    }
}

6.這里還有一個(gè)有意思的實(shí)例大家可以看一看

(1)題目:
某系統(tǒng)運(yùn)行日志記錄器(Logger)可以通過多種途徑保存系統(tǒng)的運(yùn)行日志,例如通過文件記錄或數(shù)據(jù)庫記錄施无,用戶可以通過修改配置文件靈活地更換日志記錄方式。在設(shè)計(jì)各類日志記錄器時(shí),開發(fā)人員發(fā)現(xiàn)需要對(duì)日志記錄器進(jìn)行一些初始化工作,初始化參數(shù)的設(shè)置過程較為復(fù)雜嘁灯,而且某些參數(shù)的設(shè)置有嚴(yán)格的先后次序猬仁,否則可能會(huì)發(fā)生記錄失敗。
為了更好地封裝記錄器的初始化過程并保證多種記錄器切換的靈活性滥壕,現(xiàn)使用工廠方法模式設(shè)計(jì)該系統(tǒng)。

(2)給UML類圖代碼就不提供了(可以模仿上面的代碼來寫)


FactoryMethod1.png

7.工廠方法模式的優(yōu)缺點(diǎn)

(1)優(yōu)點(diǎn):
1.工廠方法用來創(chuàng)建客戶所需要的產(chǎn)品,同時(shí)還向客戶隱藏了哪種具體產(chǎn)品類將被實(shí)例化這一細(xì)節(jié)
2.能夠讓工廠自主確定 創(chuàng)建何種產(chǎn)品對(duì)象,而如何創(chuàng)建這個(gè)對(duì)象的細(xì)節(jié)則完全封裝在具體工廠內(nèi)部
3.在系統(tǒng)中加入新產(chǎn)品時(shí),完全符合開閉原則
(2)缺點(diǎn):
1.系統(tǒng)中類的個(gè)數(shù)將成對(duì)增加,在一定程度上增加了系統(tǒng)的復(fù)雜度,會(huì)給系統(tǒng)帶來一些額外的開銷
2.增加了系統(tǒng)的抽象性和理解難度

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兽泣,一起剝皮案震驚了整個(gè)濱河市绎橘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唠倦,老刑警劉巖称鳞,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異牵敷,居然都是意外死亡胡岔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門枷餐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靶瘸,“玉大人,你說我怎么就攤上這事≡惯洌” “怎么了屋剑?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诗眨。 經(jīng)常有香客問我唉匾,道長,這世上最難降的妖魔是什么匠楚? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任巍膘,我火速辦了婚禮,結(jié)果婚禮上芋簿,老公的妹妹穿的比我還像新娘峡懈。我一直安慰自己,他們只是感情好与斤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布肪康。 她就那樣靜靜地躺著,像睡著了一般撩穿。 火紅的嫁衣襯著肌膚如雪磷支。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天食寡,我揣著相機(jī)與錄音雾狈,去河邊找鬼。 笑死抵皱,一個(gè)胖子當(dāng)著我的面吹牛箍邮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叨叙,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼堪澎!你這毒婦竟也來了擂错?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤樱蛤,失蹤者是張志新(化名)和其女友劉穎钮呀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昨凡,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爽醋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了便脊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚂四。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遂赠,到底是詐尸還是另有隱情久妆,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布跷睦,位于F島的核電站筷弦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏抑诸。R本人自食惡果不足惜烂琴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜕乡。 院中可真熱鬧奸绷,春花似錦、人聲如沸异希。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽称簿。三九已至扣癣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憨降,已是汗流浹背父虑。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留授药,地道東北人士嚎。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像悔叽,于是被迫代替她去往敵國和親莱衩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)單工廠模式雖然簡(jiǎn)單娇澎,但存在一個(gè)很嚴(yán)重的問題笨蚁。當(dāng)系統(tǒng)中需要引入新產(chǎn)品時(shí),由于靜態(tài)工廠方法通過所傳入?yún)?shù)的不同來創(chuàng)建...
    justCode_閱讀 1,190評(píng)論 1 9
  • 在閻宏博士的《JAVA與模式》一書中開頭是這樣描述工廠方法模式的: 工廠方法模式是類的創(chuàng)建模式趟庄,又叫做虛擬構(gòu)造子(...
    今晚打肉山閱讀 324評(píng)論 0 0
  • 工廠方法是在設(shè)計(jì)模式中常用的一種模式括细,它屬于設(shè)計(jì)模式的創(chuàng)造類型模式,主要用來創(chuàng)建對(duì)象戚啥。 定義: 定義一個(gè)創(chuàng)建對(duì)象的...
    韓明澤閱讀 2,198評(píng)論 0 3
  • 【學(xué)習(xí)難度:★★☆☆☆奋单,使用頻率:★★★★★】直接出處:工廠方法模式梳理和學(xué)習(xí):https://github.co...
    BruceOuyang閱讀 617評(píng)論 0 2
  • 之前的簡(jiǎn)單工廠模式并不屬于23種GOF設(shè)計(jì)模式之一,今天我們將介紹真正的工廠設(shè)計(jì)模式猫十,工廠方法模式览濒。 0.拋出問題...
    ironman327閱讀 417評(píng)論 0 0