第九章-原型模式

吃可爱长大的小学妹 提交于 2019-12-06 16:53:48

原型模式(Prototype): 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

原型模式其实就是从一个对象创建另外一个可定制的对象,而且不需要知道任何创建的细节。

原型模式基本代码

#include<iostream>
#include<string>

using namespace std;

//抽象基类
class Prototype
{
private:
    string m_strName;
public:
    Prototype(string strName) { m_strName = strName; }
    Prototype() { m_strName = " "; }
    void Show()
    {
        cout << m_strName << endl;
    }
    virtual Prototype* Clone() = 0;
};

// class ConcretePrototype1 
class ConcretePrototype1 : public Prototype
{
public:
    ConcretePrototype1(string strName) : Prototype(strName) {}
    ConcretePrototype1() {}

    virtual Prototype* Clone()
    {
        ConcretePrototype1 *p = new ConcretePrototype1();
        *p = *this;                         //复制对象 
        return p;
    }
};

// class ConcretePrototype2 
class ConcretePrototype2 : public Prototype
{
public:
    ConcretePrototype2(string strName) : Prototype(strName) {}
    ConcretePrototype2() {}

    virtual Prototype* Clone()
    {
        ConcretePrototype2 *p = new ConcretePrototype2();
        *p = *this; //复制对象 
        return p;
    }
};



//客户端
int main()
{
    ConcretePrototype1* test = new ConcretePrototype1("小王");
    ConcretePrototype1* test2 = (ConcretePrototype1*)test->Clone();
    test->Show();
    test2->Show();

    system("pause");
    return 0;
}

浅拷贝和深拷贝 详细见《大话数据结构》第9章

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!