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


作者感言

刚忙完就给我来一场大病, 多么痛的领悟, 好不容易好点了, 可以整理整理知识点了~

最后: 如果你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会参考你们的意见再进行修改, 联系我时, 请备注工厂模式, 如果觉得好的话, 希望大家也可以打赏一下~嘻嘻~祝大家学习愉快~谢谢~


简介

所谓工厂模式其实显示中的工厂没啥区别, 客户下单, 工厂负责做出产品出来交货, 这样子就没了, 至于工厂里面做了什么东西, 怎么实现, 我们完全不用关注, 只要知道工厂能按时交货就可以了.


简单工厂与抽象工厂

在工厂模式当中, 又有两种不同的工厂模式, 分别是简单工厂抽象工厂, 他们之前的区别也很简单, 无非就是一个是实例一个抽象, 这么说好像不太明确, 下面我们来建个工程, 看看简单工厂抽象工厂两者之间到底有啥不一样~


简单工厂

首先我们把之前的那个WorkSpace打开, 新建一个FactoryPattern工程, 然后我们再来新建一个工厂类, 这次我们就拿一个汽车工厂作为例子~

接下来我们创建一个汽车的基类BaseCar, 还有一个协议, 这个协议是用来限制BaseCar或者BaseCar的子类实现一些必须实现的方法, 我这里只是做演示, 所以BaseCar类里面空实现就好了, 其他的交给子类去实现.

汽车的基类我们已经有了, 现在我们来建立一个汽车工厂类, 就拿全球最大的汽车厂商通用来做例子, 在这里我们会拿通用汽车的几个旗下品牌来做例子, 且都继承与BaseCar, 然后给他们对应做一些差异化的操作就OK了~~

现在我们来实现Protocol里的方法再加一些差异化, 酱紫我们就知道到时候初始化出来的汽车是哪辆了~~ 我们先拿Buick来做例子, 添加一个差异化方法, 然后再看看我们利用工厂模式初始化出来的对象是不是Buick.

其他的几个品牌车子也是同理进行就可以了, 这里就不做演示了, 代码当中我会填上去, 到时候大家去下载源码下来看看就哦了~~

简单工厂到这里就基本上搞定了, 下面就让我们来看看什么是抽象工厂.


抽象工厂

其实所谓的抽象工厂简单工厂最大的却别, 就是把工厂类做成一个抽象的对象, 比简单工厂多了一层抽象层, 然后使用一个管理者去管理这些对应的厂商, 用户可以根据自己的需求, 向不同的厂商拿货, 这就像是超市似得, 一个类别的商品有好几个或者是十几个不同的厂商在供货, 可以让消费者, 根据自己的消费水平或者需求来选择不同厂商的产品, 下面让我们用代码说话~


新建抽象工厂目录

在开始之前, 我们肯定要先规划好文件夹的目录, 以免与之前的简单工厂类搞混, 下面就是我们的文件夹结构.

接下来我们就要去新建我们的BaseFactory以及BaseCar, 但是这里由于之前已经有BaseCar这个类了, 为了区别, 我们在新建的BaseCar前面加个前缀Ab, 酱紫就好了

声明且实现AbBaseFactory的一个方法.

新建完成之后, 我们就需要继续, 这次我们拿长安广汽两个厂商做例子, 车型的话, 我就随便挑两个, 一个是凯美瑞, 一个是昂克赛拉(我是随便取的两辆车啊, 百度一搜就出来这两个货了, 要怪就怪百度去吧).


完善对应的工厂

新建完这些类之后, 我们需要分别给对应的厂商添加对应的车型, 长安-马自达, 广汽-凯美瑞


工厂管理者

在完成了之前的工作之后, 现在我们来看看抽象工厂的核心, 工厂管理者(FactoryManager).

酱紫, 我们就完成了抽象工厂的所有步骤了, 下面让我们来使用一下抽象工厂.


使用抽象工厂

完成了所有步骤之后, 我们就来使用一下抽象工厂, 看看到底是不是我们所要的东西.

嘿嘿, 到这里, 我们就完成了工厂模式简单工厂抽象工厂了, 非常的简单, 如果你们需要对应的文档和代码, 请到我的GitHub里, 地址就在下面


工程地址

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

玩转 iOS 开发:《iOS 设计模式 — 工厂模式》相关推荐

  1. 移动开发之设计模式-工厂模式(IOSAndroid)

    资源 完全参照 工厂模式|菜鸟教程 ,但不包括IOS代码 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对 ...

  2. JavaScript设计模式——工厂模式

    在介绍工厂模式之前,首先我们要理解一下什么是设计模式?什么是设计原则? 设计模式: 通常在我们解决问题的时候,很多时候不是只有一种方式,我们通常有多种方式来解决:但是肯定会有一种通用且高效的解决方案, ...

  3. 设计模式-工厂模式的3中不同实现[JAVA]

    设计模式-工厂模式的3中不同实现[JAVA] 工厂模式简介 In Factory pattern, we create object without exposing the creation log ...

  4. 理解设计模式——工厂模式

    理解设计模式--工厂模式 定义 模式类型 调用方式 实现方法 简单工厂模式 设计结构 工厂模式 设计结构 抽象工厂模式 使用场景 定义 提供一个接口以创建一系列相关或互相依赖的对象,而无须指定它们具体 ...

  5. PHP设计模式-工厂模式

    PHP设计模式-工厂模式 一.工厂模式概念 工厂模式,顾名思义,像工厂的流水线,固定的规格,固定的材料,做固定的事情. 工厂模式分为三种:简单工厂.工厂方法.抽象工厂 ,三种工厂的区别是,抽象工厂由多 ...

  6. 设计模式——工厂模式(Factory Pattern)

    设计模式--工厂模式(Factory Pattern) 工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式.该 ...

  7. Java设计模式-工厂模式(3)抽象工厂模式

    在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...

  8. Java设计模式-工厂模式(2)工厂方法模式

    在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...

  9. Java设计模式-工厂模式(1)简单工厂模式

    Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...

  10. 设计模式---工厂模式

    设计模式---工厂模式 工厂方法模式 概述:工厂方法模式中抽象工厂负责定义创建对象的接口,具体创建工作由继承抽象工厂的具体类实现. 优点:客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新 ...

最新文章

  1. [整理] - Relational Engine之UMS Internals
  2. java的线程管理器,QuickThread - Java线程池管理器
  3. 【C/C++】lib 和 dll 的区别、生成以及使用详解
  4. 【Android-NCNN-Vulkan】记录一次ncnn-vulkan在低性能开发板上出现的native内存溢出的问题
  5. html页面加载时触发的方法,在页面加载时触发onchange html事件
  6. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件
  7. java实现鸭子类型,Golang的interface及duck typing鸭子类型
  8. php7 捕获语法错误,PHP7 method_exists未捕获错误:函数名称必须是字符串
  9. 华为华三开启snmp服务
  10. 图像处理系列——图像融合之加权平均(WA)
  11. FFmpeg转换ts为mp4
  12. 成长型思维和固定型思维
  13. 【Linux】CentOS7设置笔记本合盖不休眠
  14. 晓宇哥新年力作!AI离线语音开关控制器
  15. 微信小程序定位功能+页面滚动+列表展示
  16. 大学阶段总结——大四
  17. (英文版)吴恩达机器学习第四周笔记
  18. 学习方法和自我管理杂记
  19. 测试显卡的软件叫游戏什么,众多显卡监测软件和测试软件,到底哪个才是最适合你...
  20. 电商后台产品设计:订单拆单

热门文章

  1. 如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)
  2. Apache架构师的30条设计原则!
  3. SpringBoot 第十篇: 用spring Restdocs创建API文档
  4. 统计学习圣经!经典教材《统计学习导论》Python版
  5. 颤抖吧,打工人!深信服推出员工离职倾向、工作摸鱼监测系统!
  6. 厉害!这位北科大博士生,4年9篇SCI一作
  7. 这三所985,博士生毕业,可能不再要求发表论文!
  8. 你写的ML代码占多少内存?这件事很重要,但很多人还不懂
  9. 985博士分享Pytorch与Tensorflow,哪个更值得你学习?
  10. python模块学习---mechanize(模拟浏览器)