iOS 设计模式-工厂方法模式

1.工厂方法模式简介

工厂方法模式(Factory Pattern),是创建型设计模式之一(设计模式分类:https://www.jianshu.com/p/18fee11deac9)。工厂方法也称为虚构造器(virtual constructor),它适用于这种情况:一个类无法预期需要生成哪个类的对象,想让子类来指定所生成的对象。工厂方法使得一个类的实例化延迟到其子类。
与直接创建新的具体对象相比,使用工厂方法创建对象可算作一种最佳方法。工厂方法模式让客户程序可以要求由工厂方法创建的对象拥有一组共同的行为。所以往类层次结构中引入新的具体产品并不需要修改客户端代码,因为返回的任何具体对象的接口都跟客户端一直在用的从前的接口相同。

2.工厂方法模式定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类。

3.工厂方法模式的使用场景

在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。
3.1 编译时无法准确预期要创建的对象的类
3.2 类想让其子类决定在运行时创建什么
3.3 类有若干辅助类为其子类,而你想将返回哪个子类这一信息局部化(出自《Objective-C编程之道 iOS设计模式解析》)

工厂方法模式把具体产品的创建推迟到工厂类的子类(具体工厂)中,此时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,这样工厂方法模式在添加新产品的时候就不修改工厂类逻辑而是添加新的工厂子类,符合开放封闭原则。

常见例子是Cocoa Touch框架中的NSNumber,例如,[NSNumber numberWithBool:YES] 消息会得到Number的子类NSCFBoolean的一个实例。

4.工厂方法模式的UML图

工厂方法模式UML图.png

5.角色划分

角色一:抽象产品 (一个)
角色二:具体产品 (多个)
角色三:抽象工厂 (一个)
角色四:具体工厂 (多个)

6.Demo 实践

Demo以三星和华为生产电脑举例,还是先看图,UML图如下:


FactoryPattern.png

Demo地址:https://github.com/zhiyoukaifa/FactoryPattern

参考书籍:
《Objective-C编程之道 iOS设计模式解析》

《Android源码设计模式解析与实战》

参考博客:
https://blog.andyqiao.top/article/12/
https://blog.csdn.net/carson_ho/article/details/52343584

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,920评论 0 14
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 4,132评论 1 15
  • 字节跳动飞书内推!北京、杭州、武汉、广州、深圳、上海,六大城市等你来投。感兴趣的朋友可以私我咨询&内推,也可以通过...
    卢卡斯哔哔哔阅读 756评论 0 3
  • 简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建...
    justCode_阅读 1,347评论 1 9
  • 客厅装修的第一步就是要进行前期的设计,这一步非常重要,因为就像做什么事都要有目标一样,这既是装修过程的指引,也是装...
    装小美阅读 436评论 0 2

友情链接更多精彩内容