對“工廠方法”立叛,突然茅塞頓開

工廠方法一直不懂它的價(jià)值负敏,雖然知道它的形式。今天《iOS設(shè)計(jì)模式解析》+這篇回答突然茅塞頓開秘蛇∑渥觯基于我的理解重新解釋一下顶考。

首先構(gòu)建一下背景

對于一個(gè)模塊而言,它提供服務(wù)妖泄,服務(wù)的具體內(nèi)容外界是不知道的村怪,如餐廳提供吃飯的服務(wù),具體菜是怎么做出來的外界是不知道的(因?yàn)榉止ば枰÷豢赡苊考露贾溃_@里服務(wù)就是接口interface柬焕,具體服務(wù)內(nèi)容就是實(shí)現(xiàn)implematation审残。

然后一個(gè)接口可能對應(yīng)多個(gè)服務(wù),同樣是“點(diǎn)菜”斑举,不同的菜區(qū)別很大搅轿、同一個(gè)菜不同的廚師、不同的餐廳區(qū)別也很大富玷。所以這里就存在一系列的區(qū)別因素璧坟,這些因素共同決定了這個(gè)接口到底會選擇什么樣的實(shí)現(xiàn)。

所以你會發(fā)現(xiàn)從接口到實(shí)現(xiàn)之間的關(guān)聯(lián)是有一個(gè)邏輯判斷的赎懦,而工廠方法就是這個(gè)邏輯判斷雀鹃,只是這是服務(wù)就是“創(chuàng)建一個(gè)對象”。

工廠方法只是特例應(yīng)用

我現(xiàn)在要?jiǎng)?chuàng)建一個(gè)對象励两,但是我只有一些區(qū)別因素黎茎,比如造車,我只知道顏色当悔、類別等傅瞻,基于這些因素如何創(chuàng)建對象的邏輯,我把它寫到一個(gè)統(tǒng)一的方法里盲憎,它就是工廠方法嗅骄。

這么做的好處是:

  1. 這個(gè)邏輯判斷誰更清楚?創(chuàng)建者還是調(diào)用者饼疙?肯定是創(chuàng)建者溺森,是它提供了創(chuàng)建對象的服務(wù)。
  2. 使用統(tǒng)一的方法窑眯,可以保證判斷邏輯的統(tǒng)一儿惫,如果以后要修改這個(gè)邏輯,只需要修改一處就可以了伸但。

想象一下不使用工廠方法會怎么做:

  1. 每個(gè)構(gòu)建的地方我都來一遍邏輯判斷肾请,寫上N個(gè)if-else,然后需求一變更胖,每個(gè)地方都要改
  2. 每個(gè)構(gòu)建的地方铛铁,我都知道具體要哪個(gè)對象隔显,我不需要做判斷,直接指定需要的對象構(gòu)建饵逐。如果這個(gè)對象是另一個(gè)模塊的括眠,這么做就相當(dāng)于把構(gòu)建選擇的邏輯摻雜到里當(dāng)前的模塊里,甚至更明顯的倍权,那個(gè)模塊是另一個(gè)部分做的掷豺,需求變了以后兩個(gè)部門都要改代碼,這就會比較亂了薄声。

而使用工廠方法当船,只要這個(gè)方法的聲明不變,那么使用者就不要修改代碼默辨,需求改變了也只是創(chuàng)建模塊這邊修改德频。

就像造車(構(gòu)建對象),我想要一個(gè)紅色的大空間的越野車(區(qū)別因素)缩幸,我把需求提交給工廠壹置,工廠給我車。至于工廠怎么造車的表谊,造了什么車我是不知道的我也不關(guān)心钞护,只要我的需求達(dá)到了就可以了。

最核心的問題爆办,目光不要放到創(chuàng)建對象這個(gè)事情本身患亿,而是從外界需求到對象選擇之間的這個(gè)邏輯身上,還有構(gòu)建一個(gè)統(tǒng)一方法把邏輯流統(tǒng)一的這個(gè)出發(fā)點(diǎn)上押逼。工廠方法只是“接口+N個(gè)實(shí)現(xiàn)”的這種模型在“構(gòu)建對象”上的一個(gè)特例而已步藕,它的核心意義并不在“構(gòu)建對象”這個(gè)是事情本身上。

發(fā)散

從這個(gè)設(shè)計(jì)上看挑格,我覺得它可以理解為是“面向接口編程”理念的一個(gè)子集咙冗。而更廣泛的模型是:一個(gè)接口,有N個(gè)實(shí)現(xiàn)漂彤,外界提供一些區(qū)別因素雾消,接口就像是大門,實(shí)現(xiàn)就像是大門里的小門挫望,區(qū)別因素從大門流入立润,走進(jìn)不同的小門。除了工廠模式媳板,還有很多的地方也會這么做桑腮。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蛉幸,隨后出現(xiàn)的幾起案子破讨,更是在濱河造成了極大的恐慌丛晦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件提陶,死亡現(xiàn)場離奇詭異烫沙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)隙笆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門锌蓄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撑柔,你說我怎么就攤上這事瘸爽。” “怎么了乏冀?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長洋只。 經(jīng)常有香客問我辆沦,道長,這世上最難降的妖魔是什么识虚? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任肢扯,我火速辦了婚禮,結(jié)果婚禮上担锤,老公的妹妹穿的比我還像新娘蔚晨。我一直安慰自己,他們只是感情好肛循,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布铭腕。 她就那樣靜靜地躺著,像睡著了一般多糠。 火紅的嫁衣襯著肌膚如雪累舷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天夹孔,我揣著相機(jī)與錄音被盈,去河邊找鬼。 笑死搭伤,一個(gè)胖子當(dāng)著我的面吹牛只怎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怜俐,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼身堡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拍鲤?” 一聲冷哼從身側(cè)響起盾沫,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤裁赠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赴精,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佩捞,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年蕾哟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了一忱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谭确,死狀恐怖帘营,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逐哈,我是刑警寧澤芬迄,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站昂秃,受9級特大地震影響禀梳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肠骆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一算途、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚀腿,春花似錦嘴瓤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至磁玉,卻和暖如春狞贱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜀涨。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工瞎嬉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厚柳。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓氧枣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親别垮。 傳聞我的和親對象是個(gè)殘疾皇子便监,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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

  • 設(shè)計(jì)模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計(jì)原則時(shí)需要注意以下幾點(diǎn):a) 高內(nèi)聚、低耦合和單一職能的“沖突”實(shí)際上,這兩者...
    彥幀閱讀 3,734評論 0 14
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理烧董,服務(wù)發(fā)現(xiàn)毁靶,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 1.感恩昨夜的小雨逊移,靜悄悄的滋潤田野预吆。 2.感恩下鄉(xiāng)走訪趣聞多多,生活總是那么豐富多彩胳泉。 3.感恩項(xiàng)目部吳總來電稱...
    遠(yuǎn)山野村閱讀 199評論 0 0
  • 在做準(zhǔn)備活動時(shí),一般是從慢跑開始案铺,而大多是從伸展肌肉開始蔬芥。這樣一方面可以使肌肉得到充分的活動,另一方面還可以有效地...
    體育觀察閱讀 254評論 0 0
  • 小路上略帶枯萎得金黃色的落葉預(yù)示著秋天越來重了 但天氣并沒有變得特別的涼快 早晨來來往往的行人匆忙的擦去額頭的汗珠...
    Weldon_閱讀 223評論 0 0