玩转 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…

相关文章
相关标签/搜索