iOS工廠模式簡(jiǎn)記


之前看了 劉小壯 的【工廠模式三部曲】:簡(jiǎn)單工廠模式工廠模式重贺、抽象工廠模式骑祟。受益匪淺回懦,強(qiáng)烈推薦去看一下這三篇原文!
下文是個(gè)人學(xué)習(xí)后的簡(jiǎn)記次企,用于之后的快速回顧怯晕。


1、簡(jiǎn)單工廠模式

抽象產(chǎn)品類:聲明公共特性及屬性缸棵;
具體產(chǎn)品子類:繼承自抽象產(chǎn)品類舟茶,去實(shí)現(xiàn)具體的操作;
工廠類:根據(jù)外界需求堵第,在工廠類中創(chuàng)建對(duì)應(yīng)的產(chǎn)品子類實(shí)例對(duì)象吧凉,并回傳給外界,是否創(chuàng)建由外界決定踏志。

簡(jiǎn)單工廠模式.png

代碼演示如下阀捅,略去部分代碼:
簡(jiǎn)單工廠模式-手機(jī).jpg

優(yōu)點(diǎn):簡(jiǎn)單。
缺點(diǎn)
1针余、創(chuàng)建產(chǎn)品子類的代碼幾乎相同饲鄙,只是創(chuàng)建的具體對(duì)象不同,若產(chǎn)品子類過多圆雁,會(huì)有很多條件語(yǔ)句忍级。
2、每次增刪某個(gè)算法摸柄,都需操作工廠類颤练,即,對(duì)擴(kuò)展開放驱负,對(duì)修改也開放,不符合 開放-封閉原則 患雇。
優(yōu)化
利用 runtime 的反射機(jī)制進(jìn)行改造跃脊。符合面向?qū)ο缶幊痰?開放-封閉原則

( 開放-封閉原則:對(duì)現(xiàn)有代碼進(jìn)行擴(kuò)展時(shí)苛吱,不對(duì)原有代碼進(jìn)行修改的原則酪术。)


2、工廠方法模式

抽象產(chǎn)品類:聲明公共特性及屬性翠储;
具體產(chǎn)品子類:繼承自抽象產(chǎn)品類绘雁,去實(shí)現(xiàn)具體的操作;
抽象工廠類:定義創(chuàng)建產(chǎn)品子類的接口援所,通過接口返回產(chǎn)品子類的對(duì)象庐舟。與應(yīng)用程序無關(guān),任何在模式中創(chuàng)建產(chǎn)品子類對(duì)象的工廠住拭,都必須實(shí)現(xiàn)此接口挪略。
具體工廠子類:繼承自抽象工廠類历帚,并重寫父類的方法來創(chuàng)建對(duì)應(yīng)的產(chǎn)品子類。

工廠方法模式.png

代碼演示如下杠娱,略去部分代碼:
工廠方法模式-手機(jī).jpg

優(yōu)點(diǎn):更加靈活挽牢,增刪某種運(yùn)算,都不會(huì)對(duì)其他地方造成影響摊求,更加符合 開放-封閉原則禽拔。
缺點(diǎn):新增一個(gè)抽象子類,意味著工廠子類要跟著成對(duì)增加室叉,造成生成過多的類睹栖,模式的復(fù)雜度也隨之增加。


3太惠、抽象工廠模式

定義了每個(gè)系列的產(chǎn)品子類創(chuàng)建所需的方法磨淌,而無需指定它們具體的類型。也叫 Kit模式凿渊。

抽象產(chǎn)品類:聲明公共特性及屬性梁只;
具體產(chǎn)品子類:繼承自抽象產(chǎn)品類,去實(shí)現(xiàn)具體的操作埃脏;
抽象工廠類:定義創(chuàng)建產(chǎn)品子類的接口搪锣,根據(jù)系列中不同類型的產(chǎn)品子類可能會(huì)有多種行為。
具體工廠子類:繼承自抽象工廠類彩掐,根據(jù)當(dāng)前具體產(chǎn)品子類對(duì)應(yīng)的系列构舟,重寫父類的方法來創(chuàng)建對(duì)應(yīng)的產(chǎn)品子類。

抽象工廠模式和工廠方法模式很相似堵幽,但是前者將抽象發(fā)揮到極致狗超,是三種工廠模式中最抽象的一種設(shè)計(jì)模式。
工廠方法模式是針對(duì)單個(gè)類型的抽象類朴下,而抽象工廠模式是針對(duì)具有相同結(jié)構(gòu)的一系列類型的抽象類努咐。


抽象工廠模式.png

代碼演示如下,略去部分代碼:


抽象工廠模式-手機(jī).jpg

優(yōu)點(diǎn)
1殴胧、強(qiáng)大靈活渗稍。
2、工廠子類對(duì)應(yīng)的是多個(gè)系列的產(chǎn)品子類团滥,可以統(tǒng)一控制多個(gè)系列的產(chǎn)品子類竿屹,更好的利用了工廠子類,適合更加復(fù)雜的業(yè)務(wù)需求灸姊。
3拱燃、完美符合 開放-封閉原則
缺點(diǎn)
1厨钻、模式比較龐大扼雏,所以需要在合適的業(yè)務(wù)場(chǎng)景使用坚嗜,不然會(huì)適得其反。


4诗充、總結(jié)

1苍蔬、 三種工廠模式的共同點(diǎn):繼承自抽象類(抽象產(chǎn)品類/抽象工廠類)的子類(產(chǎn)品子類/工廠子類),都必須對(duì)抽象類定義的方法給出對(duì)應(yīng)的實(shí)現(xiàn)蝴蜓,此模式就叫做 工廠模式碟绑。

2、工廠模式的核心:抽象+多態(tài)茎匠。
抽象子類繼承自抽象類格仲,對(duì)抽象類中定義的方法和屬性給出不同的實(shí)現(xiàn)方式,通過多態(tài)的方式進(jìn)行方法實(shí)現(xiàn)和調(diào)用诵冒,構(gòu)成了工廠模式的核心凯肋。

3、在工廠類中對(duì)開放封閉原則有著完美的體現(xiàn)汽馋,對(duì)擴(kuò)展的開放以及對(duì)修改的封閉侮东。
例如,最抽象的抽象工廠模式豹芯,
a悄雅、抽象工廠模式中增加新的系列(蘋果系列),直接擴(kuò)展一個(gè)工廠子類 (蘋果工廠子類)及對(duì)應(yīng)的產(chǎn)品子類(蘋果Phone產(chǎn)品子類铁蹈、蘋果TV產(chǎn)品子類)宽闲,對(duì)整個(gè)模式框架不會(huì)帶來其他影響。
b握牧、如果增加一個(gè)新的類型(如電腦)容诬,創(chuàng)建新的類型對(duì)應(yīng)的類(電腦的抽象產(chǎn)品類,各系列的電腦產(chǎn)品子類)沿腰,并對(duì)整個(gè)抽象工廠類(添加生產(chǎn)電腦)及其工廠子類(各系列對(duì)應(yīng)實(shí)現(xiàn)的生產(chǎn)電腦)進(jìn)行方法擴(kuò)展放案。

4、在外界使用產(chǎn)品子類的功能時(shí)矫俺,不需要知道任何關(guān)于產(chǎn)品子類的特征,產(chǎn)品子類也不會(huì)出現(xiàn)在外界掸冤,外界只需要和抽象類打交道就可以厘托。
工廠模式將產(chǎn)品子類的創(chuàng)建和實(shí)現(xiàn)分離,具體的創(chuàng)建操作由工廠類來進(jìn)行稿湿,產(chǎn)品子類只需要關(guān)注業(yè)務(wù)即可铅匹,外界不需要知道產(chǎn)品子類實(shí)例化的過程。這種方式非常靈活并易于擴(kuò)展饺藤,而且在大型項(xiàng)目中尤為明顯包斑,可以很好的避免代碼量過多的問題流礁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市罗丰,隨后出現(xiàn)的幾起案子神帅,更是在濱河造成了極大的恐慌,老刑警劉巖萌抵,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件找御,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡绍填,警方通過查閱死者的電腦和手機(jī)霎桅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讨永,“玉大人滔驶,你說我怎么就攤上這事∏淠郑” “怎么了揭糕?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)比原。 經(jīng)常有香客問我插佛,道長(zhǎng),這世上最難降的妖魔是什么量窘? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任雇寇,我火速辦了婚禮,結(jié)果婚禮上蚌铜,老公的妹妹穿的比我還像新娘锨侯。我一直安慰自己,他們只是感情好冬殃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布囚痴。 她就那樣靜靜地躺著,像睡著了一般审葬。 火紅的嫁衣襯著肌膚如雪深滚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天涣觉,我揣著相機(jī)與錄音痴荐,去河邊找鬼。 笑死官册,一個(gè)胖子當(dāng)著我的面吹牛生兆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膝宁,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼鸦难,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼根吁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起合蔽,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤击敌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后辈末,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愚争,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年挤聘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轰枝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡组去,死狀恐怖鞍陨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情从隆,我是刑警寧澤诚撵,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站键闺,受9級(jí)特大地震影響寿烟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辛燥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一筛武、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挎塌,春花似錦徘六、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至嘴高,卻和暖如春竿音,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拴驮。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工谍失, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人莹汤。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像颠印,于是被迫代替她去往敵國(guó)和親纲岭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抹竹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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