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

CainLuo發表於2019-03-01

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


作者感言

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

最後: 如果你有更好的建議或者對這篇文章有不滿的地方, 請聯絡我, 我會參考你們的意見再進行修改, 聯絡我時, 請備註工廠模式, 如果覺得好的話, 希望大家也可以打賞一下~嘻嘻~祝大家學習愉快~謝謝~


簡介

UML

所謂工廠模式其實顯示中的工廠沒啥區別, 客戶下單, 工廠負責做出產品出來交貨, 這樣子就沒了, 至於工廠裡面做了什麼東西, 怎麼實現, 我們完全不用關注, 只要知道工廠能按時交貨就可以了.


簡單工廠與抽象工廠

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


簡單工廠

首先我們把之前的那個WorkSpace開啟, 新建一個FactoryPattern工程, 然後我們再來新建一個工廠類, 這次我們就拿一個汽車工廠作為例子~

1

接下來我們建立一個汽車的基類BaseCar, 還有一個協議, 這個協議是用來限制BaseCar或者BaseCar的子類實現一些必須實現的方法, 我這裡只是做演示, 所以BaseCar類裡面空實現就好了, 其他的交給子類去實現.

2

3

汽車的基類我們已經有了, 現在我們來建立一個汽車工廠類, 就拿全球最大的汽車廠商通用來做例子, 在這裡我們會拿通用汽車的幾個旗下品牌來做例子, 且都繼承與BaseCar, 然後給他們對應做一些差異化的操作就OK了~~

4

5

現在我們來實現Protocol裡的方法再加一些差異化, 醬紫我們就知道到時候初始化出來的汽車是哪輛了~~ 我們先拿Buick來做例子, 新增一個差異化方法, 然後再看看我們利用工廠模式初始化出來的物件是不是Buick.

6

7

其他的幾個品牌車子也是同理進行就可以了, 這裡就不做演示了, 程式碼當中我會填上去, 到時候大家去下載原始碼下來看看就哦了~~

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


抽象工廠

AbstractFactoryUML

其實所謂的抽象工廠簡單工廠最大的卻別, 就是把工廠類做成一個抽象的物件, 比簡單工廠多了一層抽象層, 然後使用一個管理者去管理這些對應的廠商, 使用者可以根據自己的需求, 向不同的廠商拿貨, 這就像是超市似得, 一個類別的商品有好幾個或者是十幾個不同的廠商在供貨, 可以讓消費者, 根據自己的消費水平或者需求來選擇不同廠商的產品, 下面讓我們用程式碼說話~


新建抽象工廠目錄

在開始之前, 我們肯定要先規劃好資料夾的目錄, 以免與之前的簡單工廠類搞混, 下面就是我們的資料夾結構.

8

接下來我們就要去新建我們的BaseFactory以及BaseCar, 但是這裡由於之前已經有BaseCar這個類了, 為了區別, 我們在新建的BaseCar前面加個字首Ab, 醬紫就好了

9

宣告且實現AbBaseFactory的一個方法.

10

11

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

12


完善對應的工廠

新建完這些類之後, 我們需要分別給對應的廠商新增對應的車型, 長安-馬自達, 廣汽-凱美瑞

13

14


工廠管理者

在完成了之前的工作之後, 現在我們來看看抽象工廠的核心, 工廠管理者(FactoryManager).

15

16

醬紫, 我們就完成了抽象工廠的所有步驟了, 下面讓我們來使用一下抽象工廠.


使用抽象工廠

完成了所有步驟之後, 我們就來使用一下抽象工廠, 看看到底是不是我們所要的東西.

17

嘿嘿, 到這裡, 我們就完成了工廠模式簡單工廠抽象工廠了, 非常的簡單, 如果你們需要對應的文件和程式碼, 請到我的GitHub裡, 地址就在下面


工程地址

專案地址: github.com/CainRun/Des…

相關文章