c++设计模式之原型模式Prototype

来源:互联网 发布:java相关的技术有哪些 编辑:程序博客网 时间:2024/06/05 15:49
/************************************************************************//*  原型模式                                  *//************************************************************************//*这里以这样一个例子为大家解释:大家都见过西游记中的悟空,可以变出n个自己悟空的真身就是原型,而它通过“克隆”的方法制造出自己    c++中原型模式的实现主要是通过拷贝构造函数实现的*/#include <IOSTREAM>using namespace std;/*原型类,声明一个克隆自己的接口*/class Prototype{public:virtual ~Prototype(){};//定义一个克隆的抽象函数virtual Prototype *Clone() const = 0 ;protected:Prototype(){}};class Wukong : public Prototype{public:Wukong(int age,char *name){this->age = age;this->name = name;}//拷贝构造函数Wukong(const Wukong&C){age=C.age;name = new char[100];strcpy(name,C.name);}//克隆函数Prototype *Clone() const{//当类对象以参数的形式传递时会调用拷贝构造函数return new Wukong(*this);}void Display(){cout<<"this is a test func"<<endl;cout<<"age = "<<age<<endl<<"name = "<<name<<endl;}private: int age;char *name;};void main(){//悟空真身Wukong *wk = new Wukong(18,"孙悟空");wk->Display();//分身1Wukong *wk1 = (Wukong*)wk->Clone();wk1->Display();//分身2Wukong *wk2 = (Wukong*)wk->Clone();wk2->Display();}

原创粉丝点击