设计模式C++描述----08.原型(Prototype)模式
一. 概述
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
换句话说,就是不用重新初始化对象,而是动态地获得对象运行时的状态。
再说明白点,就是要一个拷贝过构造函数类似功能的接口。
结构图如下:
代码如下:
- //原型类,有一个clone接口
- class Prototype
- {
- public:
- virtual ~Prototype() {}
- virtual Prototype* Clone() const = 0;
- };
- //具体原型类,实现一个clone自身的操作
- class ConcretePrototype:public Prototype
- {
- public:
- ConcretePrototype() {}
- //拷贝构造函数
- ConcretePrototype(const ConcretePrototype& cp)
- {
- cout<<"ConcretePrototype copy ..."<<endl;
- }
- //克隆接口
- Prototype* Clone() const
- {
- return new ConcretePrototype(*this);
- }
- };
- //测试代码
- int main(int argc,char* argv[])
- {
- //拷贝构造操作
- ConcretePrototype p1;
- ConcretePrototype p2 = p1;
- //克隆操作
- Prototype* p3 = new ConcretePrototype();
- Prototype* p4 = p3->Clone();
- return 0;
- }
二. 说明
1. Prototype 模式的关键就是(C++中)拷贝构造函数的实现方式,这也是C++实现技术层面上的事情。
2. 示例代码中不涉及到深层拷贝(主要指有指针、复合对象的情况),主要在于体现Prototype模式的思想。