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