设计模式之 Factory Mode 工厂模式:Swift 实现
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 实现相关推荐
- Java设计模式(1)工厂模式(Factory模式)
工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因 ...
- 设计模式(五)--工厂模式汇总
LZ想把简单工厂模式.工厂方法模式和抽象工厂模式整理到一篇博文当中,由浅入深,应该能方便理解和记忆,话不多说,进入正题. 一.简单工厂模式 定义:从设计模式的类型上来说,简单工厂模式是属于创建型模式, ...
- 23种设计模式 -----Day01:简单工厂模式
目录 前言 1.设计模式(Design pattern)定义 2.为什么要使用设计模式(使用设计模式的意义) 3.设计原则 a.单一职责原则 b.开放封闭原则 c.里氏代换原则 d.迪米特法则 e.依 ...
- 一口气讲完设计模式(单例模式、工厂模式、原型模式、建造者模式、适配器、桥梁模式)
设计模式 使用设计模式,可以让我们的代码具有更好的可读性.可扩展性.可读性.重用性.符合高内聚低耦合的特点.作为程序员,是我们经常听到的概念,也是我们程序员必须深入学习,了解的知识. 设计模式种类 该 ...
- 【设计模式】之抽象工厂模式
创造性设计模式 创造型模式主要是为了实例化类所用.进一步又分为类创建.对象创建模式. 类创建模式 类创建模式主要基于继承方式进行实例化 对象创建模式 对象创建模式主要基于委托机制进行实例化 Abstr ...
- 【23种设计模式专题】二 工厂模式
程序猿学社的GitHub,欢迎Star github技术专题 本文已记录到github 文章目录 前言 小故事 传统方式 简单工厂(第一种) 工厂方法模式(第二种) 抽象工厂模式(第三种) 使用工厂方 ...
- JAVA设计模式之3种工厂模式
转自 JAVA设计模式之3种工厂模式 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离.为了使软件的结构更加清晰,外 ...
- 设计模式C#描述——抽象工厂模式
设计模式C#描述--抽象工厂模式 阅读此文应先阅读简单工厂模式与工厂方法模式 抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广. 假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产 ...
- 09Abstract Factory(抽象工厂)模式
技术交流QQ群:1027579432,欢迎你的加入! 1.Abstract Factory(抽象工厂)模式动机 在软件系统中,经常面临着一系列相互依赖的对象的创建工作.同时,由于需求的变化,往往存在更 ...
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...
转自:http://www.cnblogs.com/stonehat/archive/2012/04/16/2451891.html 设计模式系列--三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂 ...
最新文章
- vim插件推荐之auto-pairs
- 解决VS+QT无法生成moc文件的问题
- linux 查找并删除
- Python+Flask+MysqL的web建设技术过程
- Qt UDP Socket丢包问题(实现百兆级速率无丢包)
- pandas操作手册
- switch【耀西的手工世界xic】破解xic文件下载
- 常用的几种向量运算法则
- 警告:Named Route ‘Main‘ has a default child route. When navigating to this named route
- 1.11CSS的基本语法
- 指针实现入栈、出栈、取栈顶元素
- Matlab - Solidworks 机器人建模(5)—— 给模型添加摩擦力
- css盒子模型有几种?以及盒模型设置?
- Android App自动化测试: OPEN-STF环境搭建
- GEE开发之Modis_ET数据分析和获取
- python百度贴吧图片下载脚本实例
- Docker和FastDFS上传和下载文件
- 2022年舞台泡泡机市场前景分析及研究报告
- 以数据中心为核心的RFID资产管理解决方案-新导智能
- 软回车变回车 上下标符号