介绍
- 所谓原型模式就是类可以通过其它对象来直接产生另一个克隆对象, 而不必要每次都调用构造函数来获得相应的对象
做法
- 通过提供克隆函数, 在该函数里实现对对象自己的深拷贝;
- 也可以提供一个抽象类, 该类只有一个克隆函数,以让所有需要克隆的累继承该接口, 所以子类都必须实现改接口;
class A
{
public:
virtual A* clone() = 0;
};
class B : public A
{
private:
int i;
string str;
public:
B():i(10),str(""){};
void setval(int i, string str)
{
this->i = i;
this->str = str;
};
virtual A* clone()
{
B* b = new B;
*b = *this;
return b;
}
void display()
{
cout<<i<<" "<<str<<endl;
}
};
int main()
{
B* Obj1 = new B;
Obj1->setval(10,"he");
B* Obj2 = (B*)Obj1->clone();
Obj2->setval(5,"binbin");
Obj1->display();
Obj2->display();
}
