设计模式9原型模式
原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
目前我的认知认为原型模式和拷贝构造没什么区别呀
拷贝构造函数的代码includeiostreamincludestringusingnamespacestd;classResume{private:stringmname;intmage;public:Resume(){}Resume(constResumeresume){mnameresume。mname;mageresume。mage;}voidSetInfo(conststringname,intage){mnamename;mageage;}voiddisplay(){cout名字是:mnameendl年龄是:mageendl;}};intmain(intargc,charconstargv〔〕){Resumeresume;resume。SetInfo(杨小哥,18);resume。display();Resumeresume2resume;resume2。display();Resumepresume;Resumeresume3p;resume3。display();return0;}
原型模式代码includeiostreamincludestringusingnamespacestd;classProtoType{};classcloneable:publicProtoType{virtualProtoTypeclone()0;};classResume:publiccloneable{private:stringmname;intmage;public:voidSetInfo(conststringname,intage){mnamename;mageage;}voiddisplay(){cout名字是:mnameendl年龄是:mageendl;}virtualResumeclone()override{returnnewResume(this);}};intmain(intargc,charconstargv〔〕){Resumeresume;resume。SetInfo(杨小哥,18);resume。display();Resumeresume2resume。clone();resume2SetInfo(杨小哥,20);resume2display();return0;}
注意,拷贝涉及到浅拷贝和深拷贝的问题,我们写代码时一定要清楚这一点。