本文简要介绍五种类创建型设计模式。
工厂方法(Factory Method)
工厂方法模式通常可以细分为两种:简单工厂和工厂方法。旨在通过创建方法来创建对象,从而隐藏对象的创建细节。
简单工厂:定义一个创建方法,通过参数来确定要创建的具体商品类型
工厂方法:定义工厂子类,每个子类负责创建一种具体商品
抽象工厂(Abstract Factory)
抽象工厂模式,每一个具体工厂都负责一系列商品的创建,且每个具体工厂创建的商品系列是一样的,比较容易理解。
建造者(Builder)
建造者模式,侧重于一步步构建一个复杂对象;与之类似的抽象工厂模式则关注构建一系列对象。
原型(Prototype)
原型模式,强调通过克隆已有的类实例来创建对象。
单例(Singleton)
单例模式,强调一个类只有唯一的实例。该设计模式的重点在于如何实现,不考虑线程安全时,分为懒汉式和饿汉式两种实现方法。
”懒汉式”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Singleton { private: static Singleton* instance;
private: Singleton() {}
public: static Singleton* GetInstance() { if (instance == nullptr) instance = new Singleton(); return instance; } }; Singleton* Singleton::instance = nullptr;
int main() { auto s = Singleton::GetInstance(); return 0; }
|
“饿汉式”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Singleton { private: static Singleton* instance;
private: Singleton() {}
public: static Singleton* GetInstance() { return instance; } }; Singleton* Singleton::instance = new Singleton();
int main() { auto s = Singleton::GetInstance(); return 0; }
|