原型模式的定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
UML图:


C++代码:
// filename: prototype.h
// author: Qinglong.mark.He
#include <iostream>
#include < string>

class Prototype
{
protected:
    std:: string name;
public:
    Prototype(){}
     virtual ~Prototype(){}
    
     virtual Prototype *clone(){ return nullptr;}
     virtual  void  set( char *n){}
     virtual  void show(){}
};

class PrototypeA:  public Prototype
{
public:
    PrototypeA(){
        name = "PrototypeA";
    }
    
    PrototypeA( const PrototypeA &r){
        name = r.name;
    }
    ~PrototypeA(){
    }
    PrototypeA *clone(){
         return  new PrototypeA(* this);
    }
     void show(){
        std::cout<<"PrototypeA name: "<<name<<std::endl;
    }
};


class PrototypeB:  public Prototype
{
public:
    PrototypeB(){
        name = "PrototypeB";
    }
    
    PrototypeB( const PrototypeB &r){
        name = r.name;
    }
    ~PrototypeB(){
    }
    PrototypeB *clone(){
         return  new PrototypeB(* this);
    }
     void show(){
        std::cout<<"PrototypeB name: "<<name<<std::endl;
    }
};

测试用例:
#include "prototype.h"

int main(){
    auto r1 =  new PrototypeA;
    auto r2 =  new PrototypeB;
    auto r3 = r1->clone();
    auto r4 = r2->clone();

    r1->show();
    r2->show();
    delete r1;
    delete r2;

    r3->show();
    r4->show();
    delete r3;
    delete r4;
    
     return 0;
}