文章轉至:cainrun.github.io/14718583940…html
剛忙完就給我來一場大病, 多麼痛的領悟, 好不容易好點了, 能夠整理整理知識點了~git
最後: 若是你有更好的建議或者對這篇文章有不滿的地方, 請聯繫我, 我會參考大家的意見再進行修改, 聯繫我時, 請備註
工廠模式
, 若是以爲好的話, 但願你們也能夠打賞一下~嘻嘻~祝你們學習愉快~謝謝~github
所謂
工廠模式
其實顯示中的工廠沒啥區別, 客戶下單, 工廠負責作出產品出來交貨, 這樣子就沒了, 至於工廠裏面作了什麼東西, 怎麼實現, 咱們徹底不用關注, 只要知道工廠能按時交貨就能夠了.學習
在工廠模式當中, 又有兩種不一樣的工廠模式, 分別是
簡單工廠
與抽象工廠
, 他們以前的區別也很簡單, 無非就是一個是實例
一個抽象
, 這麼說好像不太明確, 下面咱們來建個工程, 看看簡單工廠
和抽象工廠
二者之間到底有啥不同~ui
首先咱們把以前的那個
WorkSpace
打開, 新建一個FactoryPattern
工程, 而後咱們再來新建一個工廠類, 此次咱們就拿一個汽車工廠做爲例子~3d
接下來咱們建立一個汽車的基類
BaseCar
, 還有一個協議, 這個協議是用來限制BaseCar
或者BaseCar
的子類實現一些必須實現的方法, 我這裏只是作演示, 因此BaseCar
類裏面空實現就行了, 其餘的交給子類去實現.code
汽車的基類咱們已經有了, 如今咱們來創建一個汽車工廠類, 就拿全球最大的汽車廠商通用來作例子, 在這裏咱們會拿通用汽車的幾個旗下品牌來作例子, 且都繼承與
BaseCar
, 而後給他們對應作一些差別化的操做就OK了~~htm
如今咱們來實現
Protocol
裏的方法再加一些差別化, 醬紫咱們就知道到時候初始化出來的汽車是哪輛了~~ 咱們先拿Buick
來作例子, 添加一個差別化方法, 而後再看看咱們利用工廠模式初始化出來的對象是否是Buick
.對象
其餘的幾個品牌車子也是同理進行就能夠了, 這裏就不作演示了, 代碼當中我會填上去, 到時候你們去下載源碼下來看看就哦了~~blog
簡單工廠
到這裏就基本上搞定了, 下面就讓咱們來看看什麼是抽象工廠
.
其實所謂的
抽象工廠
與簡單工廠
最大的卻別, 就是把工廠類作成一個抽象的對象, 比簡單工廠
多了一層抽象層, 而後使用一個管理者去管理這些對應的廠商, 用戶能夠根據本身的需求, 向不一樣的廠商拿貨, 這就像是超市似得, 一個類別的商品有好幾個或者是十幾個不一樣的廠商在供貨, 可讓消費者, 根據本身的消費水平或者需求來選擇不一樣廠商的產品, 下面讓咱們用代碼說話~
在開始以前, 咱們確定要先規劃好文件夾的目錄, 以避免與以前的
簡單工廠
類搞混, 下面就是咱們的文件夾結構.
接下來咱們就要去新建咱們的
BaseFactory
以及BaseCar
, 可是這裏因爲以前已經有BaseCar
這個類了, 爲了區別, 咱們在新建的BaseCar
前面加個前綴Ab
, 醬紫就行了
聲明且實現
AbBaseFactory
的一個方法.
新建完成以後, 咱們就須要繼續, 此次咱們拿
長安
和廣汽
兩個廠商作例子, 車型的話, 我就隨便挑兩個, 一個是凱美瑞
, 一個是昂克賽拉
(我是隨便取的兩輛車啊, 百度一搜就出來這兩個貨了, 要怪就怪百度去吧).
新建完這些類以後, 咱們須要分別給對應的廠商添加對應的車型,
長安-馬自達
,廣汽-凱美瑞
在完成了以前的工做以後, 如今咱們來看看
抽象工廠
的核心, 工廠管理者(FactoryManager).
醬紫, 咱們就完成了
抽象工廠
的全部步驟了, 下面讓咱們來使用一下抽象工廠
.
完成了全部步驟以後, 咱們就來使用一下
抽象工廠
, 看看究竟是不是咱們所要的東西.
嘿嘿, 到這裏, 咱們就完成了
工廠模式
的簡單工廠
和抽象工廠
了, 很是的簡單, 若是大家須要對應的文檔和代碼, 請到個人GitHub
裏, 地址就在下面
項目地址: github.com/CainRun/Des…