iOS設(shè)計模式(一)工廠模式

簡單的工廠模式

基本定義

  • 先定義了一個類, 這個類專門用于創(chuàng)建其他類的實(shí)例, 被創(chuàng)建的類都有一個共同特點(diǎn), 相同的父類
  • 工廠模式屬于創(chuàng)建型模式
  • 可以根據(jù)創(chuàng)建時傳入?yún)?shù)的不同, 返回不同實(shí)例對象, 也可以單獨(dú)定義不帶參數(shù)的方法創(chuàng)建指定的實(shí)例對象

模式結(jié)構(gòu)

  • Product: 抽象產(chǎn)品角色 ==> 為所有產(chǎn)品的父類
  • ConcreteProductA:具體的產(chǎn)品角色 ==> 繼承Product
  • ConcreteProductB:具體的產(chǎn)品角色 ==> 繼承Product
  • Factory: 工廠角色 ==> 專門用于創(chuàng)建實(shí)例類

特點(diǎn)

  • 實(shí)例具有共同的父類
  • 核心就是繼承. 子類繼承父類并重寫

代碼實(shí)現(xiàn)

  • 這里, 一個車父類, 兩個車類, 一個工廠


這里是在ViewController中調(diào)用createCar方法.然后我們就能批量生產(chǎn)帶有特定model屬性的本田車對象和豐田車對象了

優(yōu)點(diǎn)

  • 實(shí)現(xiàn)了對責(zé)任的分隔,提供了專門類創(chuàng)建對象
  • 通過配置文件方式轧粟,可以在不修改代碼情況下, 擴(kuò)展新產(chǎn)品脓魏,在一定程序上提高了系統(tǒng)的靈活性。

缺點(diǎn)

  • 工廠類集中了所以產(chǎn)品創(chuàng)建邏輯揽祥,一旦不能正常工作檩电,整個系統(tǒng)受影響
  • 類個數(shù)爆增,在一定程度上增加了系統(tǒng)的復(fù)雜度和理解
  • 系統(tǒng)擴(kuò)展困難料按,一旦添加了新產(chǎn)品就不得不修改工廠邏輯载矿,在產(chǎn)品類型較多時,有可能造成工廠邏輯過于復(fù)雜弯洗,不利于系統(tǒng)的擴(kuò)展和維護(hù)
  • 工廠集中了所有邏輯, 后期擴(kuò)展困難逢勾。產(chǎn)品類符合開閉原則,但是工廠違反了逃贝,因?yàn)樵黾右粋€產(chǎn)品迫摔,工廠需要修改邏輯, 耦合太高。

總結(jié)

  • 簡單工廠模式的要點(diǎn)就在于當(dāng)你需要什么沪摄,只需要知道正確參數(shù)纱烘,就可以獲取你所需要的對象凹炸,無需知道其創(chuàng)建細(xì)節(jié)昼弟。

  • 簡單工廠模式最大的優(yōu)點(diǎn)在于實(shí)現(xiàn)對象的創(chuàng)建和對象的分離舱痘,但是如果產(chǎn)品過多時,會導(dǎo)致工廠代碼復(fù)雜芭逝。

正常的工廠模式

基本定義

  • 工廠方法模式定義了一個創(chuàng)建對象的接口旬盯,但由子類決定要實(shí)例化的類是哪一個翎猛。工廠方法模式讓實(shí)例化推遲到子類接剩。

模式結(jié)構(gòu)

  • product: 抽象產(chǎn)品懊缺。所有的產(chǎn)品必須實(shí)現(xiàn)這個共同的接口,這樣一來遗座,使用這些產(chǎn)品的類既可以引用這個接口俊扳。
  • ConcreteProduct:具體產(chǎn)品。
  • Creator:抽象工廠碎绎。它實(shí)現(xiàn)了所有操縱產(chǎn)品的方法筋帖,但不實(shí)現(xiàn)工廠方法冤馏。Creator所有的子類都必須要實(shí)現(xiàn)factoryMethod()方法。
  • ConcreteCreator:具體工廠代箭。制造產(chǎn)品的實(shí)際工廠涕刚。它負(fù)責(zé)創(chuàng)建一個或者多個具體產(chǎn)品
640.png

代碼實(shí)現(xiàn)

一個工廠對應(yīng)一個產(chǎn)品

特點(diǎn)

  • 比簡單工廠多了一個工廠的抽象類

抽象工廠模式

特點(diǎn)

  • 利用OOP的多態(tài)性杜漠,工廠產(chǎn)品都抽出一個基類驾茴,一個工廠對一個系列產(chǎn)品

  • 產(chǎn)品過多的時候, 比如有100個車型, 如果用工廠方式, 創(chuàng)建100個工廠一一對應(yīng), 類太多太惡心, 從而引出抽象工廠概念, 工廠不在對應(yīng)一種產(chǎn)品, 工廠可以分類, 可以分為日系汽車工廠, 德系汽車工廠, 美系汽車工廠, 減少了工廠的創(chuàng)建

模式結(jié)構(gòu)

  • AbstractFactory:抽象工廠。抽象工廠定義了一個接口晨缴,所有的具體工廠都必須實(shí)現(xiàn)此接口峡捡,這個接口包含了一組方法用來生產(chǎn)產(chǎn)品。
  • ConcreteFactory:具體工廠延都。具體工廠是用于生產(chǎn)不同產(chǎn)品族晰房。要創(chuàng)建一個產(chǎn)品,客戶只需要使用其中一個工廠完全不需要實(shí)例化任何產(chǎn)品對象与境。
  • AbstractProduct:抽象產(chǎn)品猖吴。這是一個產(chǎn)品家族,每一個具體工廠都能夠生產(chǎn)一整組產(chǎn)品共屈。
  • Product:具體產(chǎn)品党窜。

代碼創(chuàng)建

其他

  • 開閉原則:一個軟件實(shí)體(如類幌衣、模塊豁护、函數(shù))對擴(kuò)展開放,對修改關(guān)閉断部。`
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末班缎,一起剝皮案震驚了整個濱河市吝梅,隨后出現(xiàn)的幾起案子惹骂,更是在濱河造成了極大的恐慌,老刑警劉巖右冻,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纱扭,死亡現(xiàn)場離奇詭異,居然都是意外死亡暗赶,警方通過查閱死者的電腦和手機(jī)肃叶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門因惭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人激率,你說我怎么就攤上這事勿决“眨” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵健爬,是天一觀的道長娜遵。 經(jīng)常有香客問我壤短,道長,這世上最難降的妖魔是什么久脯? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任纳胧,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灵莲。我一直安慰自己羞酗,他們只是感情好瘤缩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布核行。 她就那樣靜靜地躺著牢硅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芝雪。 梳的紋絲不亂的頭發(fā)上减余,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天惩系,我揣著相機(jī)與錄音位岔,去河邊找鬼。 笑死堡牡,一個胖子當(dāng)著我的面吹牛赃承,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悴侵,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼瞧剖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了可免?” 一聲冷哼從身側(cè)響起抓于,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浇借,沒想到半個月后捉撮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妇垢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年巾遭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闯估。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡灼舍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涨薪,到底是詐尸還是另有隱情骑素,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布刚夺,位于F島的核電站献丑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侠姑。R本人自食惡果不足惜创橄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望莽红。 院中可真熱鬧妥畏,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柳畔。三九已至馍管,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間薪韩,已是汗流浹背确沸。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俘陷,地道東北人罗捎。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像拉盾,于是被迫代替她去往敵國和親桨菜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

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