您的位置:首页 > 其它

设计模式---原型模式

2017-06-06 10:35 155 查看
原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节

浅复制,被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
深复制,把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象

#include<iostream>

using namespace std;

class Resume

{

    protected:

        char *m_name;

    public:

        virtual Resume *Clone(){return NULL;}

        virtual void Show(){}

    

};

class Instance : public Resume

{

    public:

    Instance(const char *str)

    {

        if(str == NULL)

        {

            m_name = new char[1];

            m_name[0] = '\0';

        }

        else

        {

            m_name = new char[strlen(str)+1];

            strcpy(m_name,str);

        }

    }

    

    Instance(const Instance &r)

    {

        m_name = new char [strlen(r.m_name)+1];

        strcpy(m_name,r.m_name);

    }

    Instance* Clone()

    {

        return new Instance(*this);

    }

    void Show()

    {

        cout<<"instance name "<<m_name<<endl;

    }

};

int main()

{

    Resume *r1 = new Instance("A");

    Resume *r3 = r1->Clone();

    r1->Show();

    delete r1;

    r1=NULL;

    

    r3->Show();

    delete r3;

    r3=NULL;

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: