开发设计模式设计模式之Prototype模式
Hoshea Zhang作用:用原型实例指定创建对象的种类,通过拷贝这些原型创建新的对象而无需通过实例化类。这种模式适用于创建成本较高的对象,或者需要大量相似对象的情况。
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #include <iostream> #include <string>
class Prototype { public: virtual Prototype* clone() = 0; virtual void printInfo() = 0; };
class ConcretePrototype : public Prototype { private: std::string info;
public: ConcretePrototype(std::string info) : info(info) {}
Prototype* clone() { return new ConcretePrototype(*this); }
void printInfo() { std::cout << "Info: " << info << std::endl; } };
int main() { ConcretePrototype prototype("Prototype");
Prototype* clone = prototype.clone();
prototype.printInfo(); clone->printInfo();
delete clone;
return 0; }
|
在上面的示例中,我们定义了一个Prototype
基类和一个ConcretePrototype
具体原型类。Prototype
基类定义了clone()
和printInfo()
纯虚函数,ConcretePrototype
类实现了这些函数。
在main()
函数中,我们首先创建了一个原型对象prototype
,然后通过调用clone()
函数克隆了一个新对象clone
。最后,我们分别调用原型对象和克隆对象的printInfo()
函数来输出它们的信息。
1 2
| Info: Prototype Info: Prototype
|