设计模式---原型模式

来源:互联网 发布:纽伦新港 知乎 编辑:程序博客网 时间:2024/06/09 18:20


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

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


#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;
}