c++ 创建型模式-原型模式(Prototype)

Posted ho966

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 创建型模式-原型模式(Prototype)相关的知识,希望对你有一定的参考价值。

1) 意图:

用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象

2) 结构:

 

 

 

   其中:

    Prototype声明一个复制自身的接口

    ConcretePrototype实现复制自身的操作

    Client让一个原型复制自身从而创建一个新的对象

3) 适用性:

  1. 当一个系统应该独立于它的产品创建、构成和表示时
  2. 当要实例化的类在运行时刻指定时
  3. 为了避免创建一个与产品类层次平行的工厂类层次时
  4. 当一个类的实例只能有几个不同状态组合中的一种时

4) 举例:

 1  #include <iostream>
 2 class  Prototype
 3 {
 4 public:
 5     Prototype() {}
 6     virtual ~Prototype() {}
 7     virtual Prototype* Clone() = 0;
 8     virtual void printCount() = 0;
 9 };
10  class ConcretePrototype : public Prototype
11  {
12  public:
13      ConcretePrototype() {}
14      ConcretePrototype(int num):m_count(num) {}
15      ConcretePrototype(const ConcretePrototype& p)
16      {
17          this->m_count = p.m_count;
18      }
19 
20      virtual ~ConcretePrototype() {}
21      virtual Prototype* Clone()
22      {
23          return new ConcretePrototype(*this);
24      }
25      virtual void printCount()
26      {
27          std::cout << "m_count : " << m_count << std::endl;
28      }
29  private:
30      int m_count;
31  };
32  
33  int main()
34  {
35      Prototype* p = new ConcretePrototype(5);
36      Prototype* p1 = p->Clone();
37 
38      p->printCount();
39      p1->printCount();
40 
41      delete p;
42      delete p1;
43      system("pause");
44  }

以上是关于c++ 创建型模式-原型模式(Prototype)的主要内容,如果未能解决你的问题,请参考以下文章

原型模式(Prototype)-创建型(Creational)设计模式

8创建型模式之原型模式

"围观"设计模式(10)--创建型之原型模式(Prototype Pattern)

ProtoType(原型)-对象创建型模式

设计模式---对象创建模式之原型模式(prototype)

Prototype原型模式