简单介绍下几种常见的创建型设计模式:
- Singleton 单例模式
- Factory 工厂模式
- Prototype 原型模式
- Builder 建造者模式
Singleton 单例模式
单例模式也是最常见的模式之一,它确保一个类只有一个实例,并提供一个全局的访问点。
主要是为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误。比如 Redis、MySQL 连接、CURL 句柄等。
1 | class RedisUtil |
Factory 工厂模式
工厂模式是另一种常用的模式,它根据参数的不同返回不同类的实例
定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类
1 | class Factory |
Prototype 原型模式
有些时候,部分对象需要被初始化多次。创建一个原型然后克隆它,比正常创建一个对象 (new Foo ())会更节省开销
1 | abstract class BookPrototype |
1 | class NovelPrototype extends BookPrototype |
1 | $novelPrototype = new NovelPrototype(); |
Builder 建造者模式
建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。
- 对象的生产需要复杂的初始化,比如给一大堆类成员属性赋初值,设置一下其他的系统环境变量。使用建造者模式可以将这些初始化工作封装起来。
- 对象的生成时可根据初始化的顺序或数据不同,而生成不同角色。
如果我们想创造出一个英雄类,我们通过实例化时设置的属性不同,让一个是射程远血量少的射手,一个是射程短血量厚的坦克:
1 | class Hero |
1 | abstract class Builder |
1 | class ADCarryBuider extends Builder |
1 | class TankBuider extends Builder |
1 | class Director |
1 | //实例化一个射手建造者 |