玩轉 iOS 開發:《iOS 設計模式 — 工廠模式》

文章轉至:cainrun.github.io/14718583940…html


做者感言

剛忙完就給我來一場大病, 多麼痛的領悟, 好不容易好點了, 能夠整理整理知識點了~git

最後: 若是你有更好的建議或者對這篇文章有不滿的地方, 請聯繫我, 我會參考大家的意見再進行修改, 聯繫我時, 請備註工廠模式, 若是以爲好的話, 但願你們也能夠打賞一下~嘻嘻~祝你們學習愉快~謝謝~github


簡介

UML

所謂工廠模式其實顯示中的工廠沒啥區別, 客戶下單, 工廠負責作出產品出來交貨, 這樣子就沒了, 至於工廠裏面作了什麼東西, 怎麼實現, 咱們徹底不用關注, 只要知道工廠能按時交貨就能夠了.學習


簡單工廠與抽象工廠

在工廠模式當中, 又有兩種不一樣的工廠模式, 分別是簡單工廠抽象工廠, 他們以前的區別也很簡單, 無非就是一個是實例一個抽象, 這麼說好像不太明確, 下面咱們來建個工程, 看看簡單工廠抽象工廠二者之間到底有啥不同~ui


簡單工廠

首先咱們把以前的那個WorkSpace打開, 新建一個FactoryPattern工程, 而後咱們再來新建一個工廠類, 此次咱們就拿一個汽車工廠做爲例子~3d

1

接下來咱們建立一個汽車的基類BaseCar, 還有一個協議, 這個協議是用來限制BaseCar或者BaseCar的子類實現一些必須實現的方法, 我這裏只是作演示, 因此BaseCar類裏面空實現就行了, 其餘的交給子類去實現.code

2

3

汽車的基類咱們已經有了, 如今咱們來創建一個汽車工廠類, 就拿全球最大的汽車廠商通用來作例子, 在這裏咱們會拿通用汽車的幾個旗下品牌來作例子, 且都繼承與BaseCar, 而後給他們對應作一些差別化的操做就OK了~~htm

4

5

如今咱們來實現Protocol裏的方法再加一些差別化, 醬紫咱們就知道到時候初始化出來的汽車是哪輛了~~ 咱們先拿Buick來作例子, 添加一個差別化方法, 而後再看看咱們利用工廠模式初始化出來的對象是否是Buick.對象

6

7

其餘的幾個品牌車子也是同理進行就能夠了, 這裏就不作演示了, 代碼當中我會填上去, 到時候你們去下載源碼下來看看就哦了~~blog

簡單工廠到這裏就基本上搞定了, 下面就讓咱們來看看什麼是抽象工廠.


抽象工廠

AbstractFactoryUML

其實所謂的抽象工廠簡單工廠最大的卻別, 就是把工廠類作成一個抽象的對象, 比簡單工廠多了一層抽象層, 而後使用一個管理者去管理這些對應的廠商, 用戶能夠根據本身的需求, 向不一樣的廠商拿貨, 這就像是超市似得, 一個類別的商品有好幾個或者是十幾個不一樣的廠商在供貨, 可讓消費者, 根據本身的消費水平或者需求來選擇不一樣廠商的產品, 下面讓咱們用代碼說話~


新建抽象工廠目錄

在開始以前, 咱們確定要先規劃好文件夾的目錄, 以避免與以前的簡單工廠類搞混, 下面就是咱們的文件夾結構.

8

接下來咱們就要去新建咱們的BaseFactory以及BaseCar, 可是這裏因爲以前已經有BaseCar這個類了, 爲了區別, 咱們在新建的BaseCar前面加個前綴Ab, 醬紫就行了

9

聲明且實現AbBaseFactory的一個方法.

10

11

新建完成以後, 咱們就須要繼續, 此次咱們拿長安廣汽兩個廠商作例子, 車型的話, 我就隨便挑兩個, 一個是凱美瑞, 一個是昂克賽拉(我是隨便取的兩輛車啊, 百度一搜就出來這兩個貨了, 要怪就怪百度去吧).

12


完善對應的工廠

新建完這些類以後, 咱們須要分別給對應的廠商添加對應的車型, 長安-馬自達, 廣汽-凱美瑞

13

14


工廠管理者

在完成了以前的工做以後, 如今咱們來看看抽象工廠的核心, 工廠管理者(FactoryManager).

15

16

醬紫, 咱們就完成了抽象工廠的全部步驟了, 下面讓咱們來使用一下抽象工廠.


使用抽象工廠

完成了全部步驟以後, 咱們就來使用一下抽象工廠, 看看究竟是不是咱們所要的東西.

17

嘿嘿, 到這裏, 咱們就完成了工廠模式簡單工廠抽象工廠了, 很是的簡單, 若是大家須要對應的文檔和代碼, 請到個人GitHub裏, 地址就在下面


工程地址

項目地址: github.com/CainRun/Des…

相關文章
相關標籤/搜索