创建型模式,共五种:
工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
1.单例模式
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
实现关键点:
- 构造函数不对外开放,一般为private;
- 通过一个静态方法或者枚举返回单例类对象;
- 确保单例类的对象有且只有一个,尤其是在多线程环境下;
- 确保单例类对象在反序列化时不会重新构建对象。
实现方式:
- 饿汉模式
- 懒汉模式
- Double Check Lock模式
- 静态内部类模式
- 枚举单例
- 使用容器
2.Builder模式
将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。
一般实现为链式调用,关键点是每个setter方法返回自身。
3.原型模式
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
多用于创建复杂的或者构建耗时的实例。
4.工厂方法模式
定义一个用于创建对象的接口,让(工厂)子类决定实例化哪个类。
子类指实现工厂方法的工厂类,工厂方法返回抽象产品类,子类的生产方法决定实例化哪个产品类。
5.抽象工厂
抽象工厂提供一组相关接口,用来生产一个相关产品的组合。
使用不同的具体工厂,生产出来的产品组合(可以把这个组合当做一个具体产品)不同,因为每个具体工厂生产什么具体产品组合,都是由具体工厂来实现的。
分离接口与实现,但是类文件爆炸,也不容易扩展。