Factory Mode 工厂模式

Provide the method for creating an instance in the superclass, and allow the subclass to choose the type of the instance.

在父类中提供创建对象的方法,允许子类决定实例化对象的类型。

具备的部分:生产者协议、产品协议,往后就可以根据需要来扩展每一种产品。

具体的生产者比如 MongoCakeCreator 的存在是为了实现与产品相关的核心业务逻辑,而不仅仅是创建 MongoCake 实例。工厂方法将核心业务逻辑从具体产品类中分离出来。

// Creator
protocol CakeCreator {func createCake() -> Cakefunc doSomethingForCake(cake: Cake) -> Cake
}// Product
protocol Cake {func doWork()
}// ConcreteCreator
class MongoCakeCreator: CakeCreator {var cake: MongoCake?func createCake() -> Cake {var cake = MongoCake()doSomethingForCake(cake: cake)return cake}func doSomethingForCake(cake: Cake) -> Cake{cake.doWork()cake.doWork()return cake}}// ConcreteCreator
class ChocolateCakeCreator: CakeCreator {func createCake() -> Cake {var cake = ChocolateCake()doSomethingForCake(cake: cake)return cake}func doSomethingForCake(cake: Cake) -> Cake{cake.doWork()return cake}
}class MongoCake: Cake {func doWork() {print("Add some mongo")}
}class ChocolateCake: Cake {func doWork() {print("Add some chocolate")}
}// If we want to add a type of cake call "PinapleCake", just need to
// make it conform to Cake and add a creator that conform to the CakeCreator for the "PinapleCake"let cakeOne = MongoCakeCreator().createCake()

设计模式之 Factory Mode 工厂模式:Swift 实现相关推荐

  1. Java设计模式(1)工厂模式(Factory模式)

    工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因 ...

  2. 设计模式(五)--工厂模式汇总

    LZ想把简单工厂模式.工厂方法模式和抽象工厂模式整理到一篇博文当中,由浅入深,应该能方便理解和记忆,话不多说,进入正题. 一.简单工厂模式 定义:从设计模式的类型上来说,简单工厂模式是属于创建型模式, ...

  3. 23种设计模式 -----Day01:简单工厂模式

    目录 前言 1.设计模式(Design pattern)定义 2.为什么要使用设计模式(使用设计模式的意义) 3.设计原则 a.单一职责原则 b.开放封闭原则 c.里氏代换原则 d.迪米特法则 e.依 ...

  4. 一口气讲完设计模式(单例模式、工厂模式、原型模式、建造者模式、适配器、桥梁模式)

    设计模式 使用设计模式,可以让我们的代码具有更好的可读性.可扩展性.可读性.重用性.符合高内聚低耦合的特点.作为程序员,是我们经常听到的概念,也是我们程序员必须深入学习,了解的知识. 设计模式种类 该 ...

  5. 【设计模式】之抽象工厂模式

    创造性设计模式 创造型模式主要是为了实例化类所用.进一步又分为类创建.对象创建模式. 类创建模式 类创建模式主要基于继承方式进行实例化 对象创建模式 对象创建模式主要基于委托机制进行实例化 Abstr ...

  6. 【23种设计模式专题】二 工厂模式

    程序猿学社的GitHub,欢迎Star github技术专题 本文已记录到github 文章目录 前言 小故事 传统方式 简单工厂(第一种) 工厂方法模式(第二种) 抽象工厂模式(第三种) 使用工厂方 ...

  7. JAVA设计模式之3种工厂模式

    转自 JAVA设计模式之3种工厂模式 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离.为了使软件的结构更加清晰,外 ...

  8. 设计模式C#描述——抽象工厂模式

    设计模式C#描述--抽象工厂模式 阅读此文应先阅读简单工厂模式与工厂方法模式 抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广. 假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产 ...

  9. 09Abstract Factory(抽象工厂)模式

    技术交流QQ群:1027579432,欢迎你的加入! 1.Abstract Factory(抽象工厂)模式动机 在软件系统中,经常面临着一系列相互依赖的对象的创建工作.同时,由于需求的变化,往往存在更 ...

  10. 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...

    转自:http://www.cnblogs.com/stonehat/archive/2012/04/16/2451891.html 设计模式系列--三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂 ...

最新文章

  1. vim插件推荐之auto-pairs
  2. 解决VS+QT无法生成moc文件的问题
  3. linux 查找并删除
  4. Python+Flask+MysqL的web建设技术过程
  5. Qt UDP Socket丢包问题(实现百兆级速率无丢包)
  6. pandas操作手册
  7. switch【耀西的手工世界xic】破解xic文件下载
  8. 常用的几种向量运算法则
  9. 警告:Named Route ‘Main‘ has a default child route. When navigating to this named route
  10. 1.11CSS的基本语法
  11. 指针实现入栈、出栈、取栈顶元素
  12. Matlab - Solidworks 机器人建模(5)—— 给模型添加摩擦力
  13. css盒子模型有几种?以及盒模型设置?
  14. Android App自动化测试: OPEN-STF环境搭建
  15. GEE开发之Modis_ET数据分析和获取
  16. python百度贴吧图片下载脚本实例
  17. Docker和FastDFS上传和下载文件
  18. 2022年舞台泡泡机市场前景分析及研究报告
  19. 以数据中心为核心的RFID资产管理解决方案-新导智能
  20. 软回车变回车 上下标符号

热门文章

  1. python处理pcap文件_使用PYTHON解析Wireshark的PCAP文件
  2. 【系统分析师之路】原创章节 非功能需求设计思维导图
  3. 民间借贷、网贷vs信用卡
  4. Java实习日记(day1)
  5. 雅虎邮箱2022年2月28日起停止中国大陆服务后的收信方法
  6. 基带传输编码方式HDB3码的快速编码步骤、原理及举例
  7. matlab的金融分析工具,金融分析利器之 MATLAB空间计量工具箱
  8. matlab常用函数解释,MATLAB常用函数总结
  9. 尚学堂马士兵Oracle学习笔记之一:基本select语句
  10. 2018年秋季学期课表