原型模式
定义
原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制现有的对象来创建新对象,而无需从头开始编写代码。在这个模式中,我们可以使用已经存在的对象作为"原型",并通过克隆该原型对象创建一个新的对象,而不是从头开始构建一个新对象。
该模式主要由以下几个角色组成:
- 抽象原型类:定义了用于克隆自身的抽象方法。
- 具体原型类:实现了抽象原型类所定义的克隆方法。
- 客户端:使用具体原型类的克隆方法来创建新的对象。
该模式的核心思想是将对象的创建过程与使用过程分离,通过复制已有对象来减少对象的创建过程,从而提高系统的性能和效率。
代码实现
cpp
#include <iostream>
using namespace std;
// 抽象原型类
class Prototype {
public:
virtual Prototype* clone() = 0;
};
// 具体原型类
class ConcretePrototype : public Prototype {
public:
Prototype* clone() {
return new ConcretePrototype(*this);
}
};
// 客户端
int main() {
Prototype* prototype = new ConcretePrototype();
Prototype* clone1 = prototype->clone(); // 克隆对象1
Prototype* clone2 = prototype->clone(); // 克隆对象2
delete prototype;
delete clone1;
delete clone2;
return 0;
}
使用场景
在实际应用中,原型模式常常被应用于大量相似对象的创建,如数据库连接池、线程池等场景中,且很多软件提供的复制(Ctrl+C)和粘贴(Ctrl+V)操作就是原型模式的典型应用。