十分钟学会一个设计模式---创建模式---原型模式

99 阅读1分钟

原型模式是一种创建型设计模,其功能为复制一个运行时的对象,包括对象各个成员当前的值。而代码又能保持独立性。

class Base {
public:
    virtual ~Base() = default;
    virtual Base* Clone() = 0;
};

class Derived : public Base {
public:
    Derived() : m_age(0),m_name("zhangsan"){}
    Derived(Derived* derived) {
        m_age = derived->m_age;
        m_name = derived->m_name;
    }
    Derived * Clone() override {
        return new Derived(this);
    }
    string GetName(){return m_name;}
    void SetName(string name){m_name = name;}
private:
    int m_age;
    string m_name;
};
int main() {
    Derived* derived = new Derived;
    cout << derived->GetName() << endl;
    derived->SetName("lisi");
    cout << derived->GetName() << endl;

    Derived* newDerived = derived->Clone(); // 深拷贝一个
    cout << newDerived->GetName() << endl;
    delete derived;
    derived = nullptr;
    delete newDerived;
    newDerived = nullptr;
}