设计模式-创造型

397 阅读3分钟

概要

创造型设计模式在设计模式三个类别中算是思想最简单,最容易学习的一个类型。核心思想就是在特定的场景下灵活地创建类或者对象。 其中还包含了几乎所有人学会的第一个设计模式-单例模式。创造型一共包含5个模式, 分别为抽象工厂模式,工厂方法模式,构建者模式,单例模式,原型模式。(还有一个简单工厂模式,但它不属于23种设计模式)。

名称场景优点缺点核心思想生活中例子代码例子
单例模式整个系统只需要一个例子,例如工具类减少内存开销只有一个类,扩展困难独一无二
工厂方法模式需要创建一个产品,而产品有不同的品牌扩展性强,屏蔽具体实现每增加一个产品就要增加一个工厂一个产品线,实例化给到工厂手机工厂工厂方法
构建者模式1.复杂的对象构建 2.一个对象参数多,部分必填,简化构造函数分离创建过程复杂性增加1.链式调用 2.不同的参数顺序,结果不同汽车选配,不同价格不同参数,不同结果构建者模式
原型模式系统里面一个对象以及他的引用太多,需要提升性能(基本不会适用)提高性能落地困难,对于JDK中自带的接口为浅拷贝,如果引用过多,工作量大。若需要深拷贝,每个引用的对象都需要NEW/序列化复制对象有丝分裂原型模式
抽象工厂模式需要创建一个产品簇,而产品有不同的品牌当增加一个新的产品时只需增加一个新的具体工厂,不需要修改原代码,满足开闭原则当产品族中需要增加一个新种类的产品时,则所有的工厂类都需要进行修改,不满足开闭原则工厂的工厂,抽象工厂中每个工厂可以创建多种类的产品;而工厂方法每个工厂只能创建一类小米工厂(手机,电脑,电视)抽象工厂

模式之间的差异与联系

  • 抽象工厂、 生成器和原型都可以用单例模式来实现。
  • 一般演化的过程:简单工厂->工厂方法->抽象方法
  • 你可以在创建复杂组合模式树时使用生成器, 因为这可使其构造步骤以递归的方式运行。
  • 你可以结合使用生成器和桥接模式: 主管类负责抽象工作, 各种不同的生成器负责实现工作。
  • 抽象工厂模式与构建者的区别:抽象工厂着重一系列对象,并立马返回。构建者关注分步骤构建复杂对象。

学习建议

必学

  • 单例模式
  • 工厂方法模式
  • 抽象工厂模式
  • 构建者模式

选学

  • 原型模式