原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。属于创建型模式,它提供了一种创建对象的最佳方式。
适用场景
当一个系统应该独立于它的产品创建、构成和表示时,要使用 Prototype模式;以及当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者为了避免创建一个与产品类层次平行的工厂类层次时;或者当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
采用C++对象的深拷贝实现
#include<iostream>
using namespace std;
class prototype
{
public:
prototype() { i = 10; j = 3.23; };
prototype(const prototype &proto) { i = proto.i; j = proto.j; };
~prototype() {};
int get_i() { return i; };
double get_j() { return j; };
private:
int i;
double j;
};
int main()
{
prototype a;
cout << "i: " << a.get_i() << endl << "j: " << a.get_j() << endl;
prototype b(a);
cout << "i: " << b.get_i() << endl << "j: " << b.get_j() << endl;
return 0;
}
在visual studio 2015上运行结果: