iOS 設(shè)計(jì)模式-工廠方法模式

1.工廠方法模式簡(jiǎn)介

工廠方法模式(Factory Pattern),是創(chuàng)建型設(shè)計(jì)模式之一(設(shè)計(jì)模式分類:http://www.itdecent.cn/p/18fee11deac9)。工廠方法也稱為虛構(gòu)造器(virtual constructor),它適用于這種情況:一個(gè)類無(wú)法預(yù)期需要生成哪個(gè)類的對(duì)象,想讓子類來(lái)指定所生成的對(duì)象。工廠方法使得一個(gè)類的實(shí)例化延遲到其子類。
與直接創(chuàng)建新的具體對(duì)象相比,使用工廠方法創(chuàng)建對(duì)象可算作一種最佳方法。工廠方法模式讓客戶程序可以要求由工廠方法創(chuàng)建的對(duì)象擁有一組共同的行為。所以往類層次結(jié)構(gòu)中引入新的具體產(chǎn)品并不需要修改客戶端代碼,因?yàn)榉祷氐娜魏尉唧w對(duì)象的接口都跟客戶端一直在用的從前的接口相同。

2.工廠方法模式定義

定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類。

3.工廠方法模式的使用場(chǎng)景

在任何需要生成復(fù)雜對(duì)象的地方,都可以使用工廠方法模式。復(fù)雜對(duì)象適合使用工廠模式,用new就可以完成創(chuàng)建的對(duì)象無(wú)需使用工廠模式。
3.1 編譯時(shí)無(wú)法準(zhǔn)確預(yù)期要?jiǎng)?chuàng)建的對(duì)象的類
3.2 類想讓其子類決定在運(yùn)行時(shí)創(chuàng)建什么
3.3 類有若干輔助類為其子類,而你想將返回哪個(gè)子類這一信息局部化(出自《Objective-C編程之道 iOS設(shè)計(jì)模式解析》)

工廠方法模式把具體產(chǎn)品的創(chuàng)建推遲到工廠類的子類(具體工廠)中,此時(shí)工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而只是給出具體工廠必須實(shí)現(xiàn)的接口,這樣工廠方法模式在添加新產(chǎn)品的時(shí)候就不修改工廠類邏輯而是添加新的工廠子類,符合開(kāi)放封閉原則。

常見(jiàn)例子是Cocoa Touch框架中的NSNumber,例如,[NSNumber numberWithBool:YES] 消息會(huì)得到Number的子類NSCFBoolean的一個(gè)實(shí)例。

4.工廠方法模式的UML圖

工廠方法模式UML圖.png

5.角色劃分

角色一:抽象產(chǎn)品 (一個(gè))
角色二:具體產(chǎn)品 (多個(gè))
角色三:抽象工廠 (一個(gè))
角色四:具體工廠 (多個(gè))

6.Demo 實(shí)踐

Demo以三星和華為生產(chǎn)電腦舉例,還是先看圖,UML圖如下:


FactoryPattern.png

Demo地址:https://github.com/zhiyoukaifa/FactoryPattern

參考書(shū)籍:
《Objective-C編程之道 iOS設(shè)計(jì)模式解析》

《Android源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)》

參考博客:
https://blog.andyqiao.top/article/12/
https://blog.csdn.net/carson_ho/article/details/52343584

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計(jì)模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計(jì)原則時(shí)需要注意以下幾點(diǎn):a) 高內(nèi)聚、低耦合和單一職能的“沖突”實(shí)際上,這兩者...
    彥幀閱讀 3,888評(píng)論 0 14
  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 4,093評(píng)論 1 15
  • 字節(jié)跳動(dòng)飛書(shū)內(nèi)推!北京、杭州、武漢、廣州、深圳、上海,六大城市等你來(lái)投。感興趣的朋友可以私我咨詢&內(nèi)推,也可以通過(guò)...
    盧卡斯嗶嗶嗶閱讀 708評(píng)論 0 3
  • 簡(jiǎn)單工廠模式雖然簡(jiǎn)單,但存在一個(gè)很嚴(yán)重的問(wèn)題。當(dāng)系統(tǒng)中需要引入新產(chǎn)品時(shí),由于靜態(tài)工廠方法通過(guò)所傳入?yún)?shù)的不同來(lái)創(chuàng)建...
    justCode_閱讀 1,307評(píng)論 1 9
  • 客廳裝修的第一步就是要進(jìn)行前期的設(shè)計(jì),這一步非常重要,因?yàn)榫拖褡鍪裁词露家心繕?biāo)一樣,這既是裝修過(guò)程的指引,也是裝...
    裝小美閱讀 422評(píng)論 0 2

友情鏈接更多精彩內(nèi)容