原型模式

Posted haosk

tags:

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

定义:

  从一个对象在创建另外一个可定制的对象,而且不需知道任何创建的细节。

  和重写拷贝构造函数一样,能简单的clong一个对象。注意深浅拷贝。

结构图:

  技术图片

 

 

 

 

 

 代码:

//抽象原型类,定义clong接口

class Prototype

{

public:

  Prototype Clong();

}

//具体原型类

class ConcretePrototype : Prototype

{

 //这个直接=就可以

    int IMyInt;
   //这个需要strncopy,不然浅拷贝
    char cMyChar[10]; 

public:

  Prototype Clong()

  {

    ConcretePrototype* CConcretePrototype = new ConcretePrototype();

    CConcretePrototype.IMyInt = this.IMyInt;

    strncpy(CConcretePrototype.cMyChar,this.cMyChar,10);

    return CConcretePrototype;

  ]

]

//客户端代码:

ConcretePrototype* CConcretePrototypeA = new ConcretePrototype();

CConcretePrototypeA.IMyInt = 7;

string strName = "hasake";

strncpy(CConcretePrototypeA.cMyChar,strName,strlen(strName));

 ConcretePrototype* CConcretePrototypeB = CConcretePrototypeA.Clong();

 

优点:能封装“某些结构复杂的对象"的创建工作;

缺点:需要注意深浅拷贝问题

以上是关于原型模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式—— 十三 :原型模式

设计模式—— 十三 :原型模式

设计模式:原型模式

原型模式

原型模式(Prototype Pattern)

原型模式