设计模式学习(五):原型模式

来源:互联网 发布:mac菜单栏 编辑:程序博客网 时间:2024/04/30 11:54

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

代码

#include <iostream>#include <string>using namespace std;class Prototype{public:    virtual void show() = 0;    virtual Prototype * clone() = 0;//最主要的方法};class ResumeA:public Prototype {  //A类型的简历public:    ResumeA(const char * n){name = n;}    ResumeA(ResumeA& o){ name = o.name;}    void show() {cout<<name<<endl;}     Prototype * clone(){return new ResumeA(*this);}private:    string name;};class ResumeB:public Prototype {  //B类型的简历public:    ResumeB(const char * n,const char * m){name = n;school = m;}    ResumeB(ResumeB& o){ name = o.name; school = o.school;}    void show() {cout<<name<<" "<<school<<endl;}     Prototype * clone(){return new ResumeB(*this);}private:    string name;    string school;};

使用方法

int main(){    Prototype * a = new ResumeA("Smith");    a->show();    a = a->clone();    a->show();    a = new ResumeB("Tom","TSING");    a->show();    a = a->clone();    a->show();    return 1;}

结果

SmithSmithTom TSINGTom TSING
0 0
原创粉丝点击