Skip to content

原型模式

回到目录

参考链接

简介

原型模式是用原型实例指定创建兑现的种类,并且通过拷贝这些原型创建新的对象。原型模式说白了其实就是有一个把自己拷贝一下的方法。该模式很好理解,该模式独特地方不是类与类之间的关系,更多的是从语义上理解,只是实现了一个接口而已。

相对来说是比较简单的

UML类图

代码示例

#include <iostream>
using namespace std;

//接口
class Prototype
{
public:
  Prototype() {}
  virtual ~Prototype() {}
  virtual Prototype *Clone() = 0;
};

//实现
class ConcretePrototype : public Prototype
{
public:
  ConcretePrototype() : m_counter(0) {}
  virtual ~ConcretePrototype() {}

  //拷贝构造函数
  ConcretePrototype(const ConcretePrototype &rhs) {
    m_counter = rhs.m_counter;
  }

  //复制自身
  virtual ConcretePrototype *Clone() {
    //调用拷贝构造函数
    return new ConcretePrototype (*this);
  }

private:
  int m_counter;
};

int main(int argc , char **argv)
{
  //生成对像
  ConcretePrototype * conProA = new ConcretePrototype ();

  //复制自身
  ConcretePrototype * conProB = conProA->Clone();

  delete conProA;
  conProA= NULL ;

  delete conProB;
  conProB= NULL ;

  return 0;
}