原型模式:当需要创建多个参数相同的实例时,只需要创建一个,其他的调用clone()即可。clone():
创建当前对象的浅表副本。方法创建一个新对象,然后将当前对象的非静态字段复制到该新对象。若当前对象是值类型,则逐位复制;若为引用或指针,则复制引用或指针而不复制对象。——《大话设计模式》
用C++实现模型模式可以直接用拷贝构造函数
#include <iostream>
#include <string>
using namespace std;
class Resume
{
public:
Resume(): _name("??"), _exper("??") { }
Resume(const string& name, const string& exper): _name(name), _exper(exper) { }
Resume(const Resume& r) { _name = r._name; _exper = r._exper; }
string get_name() const { return _name; }
string get_exper() const { return _exper; }
private:
string _name, _exper;
};
int main()
{
Resume r1, r2, r3;
r1 = Resume("irene", "none");
r2 = Resume(r1);
r3 = Resume(r1);
cout << "the experience of " << r1.get_name() << " is " << r1.get_exper() << endl;
cout << "the experience of " << r2.get_name() << " is " << r2.get_exper() << endl;
cout << "the experience of " << r3.get_name() << " is " << r3.get_exper() << endl;
return 0;
}
输出:
the experience of irene is none
the experience of irene is none
the experience of irene is none