创建型设计模式 已经全部书写完毕,总共有5个,分别是:
- 单例模式(Singleton Pattern)
- 建造者模式(Builder Pattern)
- 工厂模式(Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 原型模式(Prototype Pattern)
所谓 创建型设计模式 即是创建对象的设计模式。
1、在实际的阅读源码的时候
你完全可以根据关键词来判断作者是否使用了设计模式,然后在脑海里大概有个该类的代码框架轮廓。例如:
- 单例模式
Xxx.getInstance()
- 建造者模式
Xxx.Builder()
- 工厂模式
Xxx.Factory.Create()
- 抽象工厂模式
XxxAbstrctFactory
- 原型模式
……(告辞)
2、在写代码的时候
考虑到需求的实现,代码如何写才能够更优雅?我们完全可以沉浸在 面向对象 的过程中。
- 对于一个随处需要使用的工具类,我们完全可以将其实现 单例模式,让他可以长时间存在于整个App的生命周期中,免去多次实例化的操作,减少了资源开销,而且也免去了令人烦恼的传参的操作。
- 如果我们需要构建一个复杂的对象,使用传统的方法,大有概率会累死你个瘪三,大量的模板形式的代码占用代码块,影响阅读,以 OkHttp 为例,其类的内部属性多如牛毛(近30个),使用 建造者模式 细分每一个功能步骤,结构化的构建一个对象,直面简单。
- 对于构建过程复杂,且构建过程中单一,并无 差异化 ,使用 工厂模式 可以免去重复的构建对象的过程。
- 如果对象存在多个平级种类(包括基于多个种类的继承关系的类),你又是一个处女座程序员,追求结构化,完美的想构建出一套框架,使用 抽象工厂模式 可以帮助你实现这个框架。
- 对于 原型模式……实在没什么可谈的……
3、技术来源于生活
或许聪明的你已经意识到了,这些设计模式都可以 类比 生活。
- 每个人都只有一双眼睛,当我们想要看什么东西的时候,就可以使用它,并且可以随时随地的使用,因为在我们出生的时候,我们的双眼就被初始化了。
- 工人们构建一个房子对象的时候,细分每一个步骤,一步一步的构建对象。
- 工厂里机械的自动化生产,每一个流水线都是构建一个对象的方法,通过同一个流水线出来的产品,属性基本是相同的。
- 抽象工厂模式 因为带有 抽象 二字,所以就没有例子了……
- 原型模式 则是来源于 克隆 这个词。