19原型模式

来源:互联网 发布:矩阵制组织形式举例 编辑:程序博客网 时间:2024/06/10 21:21


1原型模式的核心内容是:

A:使用一个clone方法复制自己的属性,并将自己返回

2原型模式的作用:就是一个复制自己的过程。

3原型模式具体描述

原型模式允许动态的增加或减少产品类,

产品类不需要非得有任何事先确定的等级结构,

原始模型模式适用于任何的等级结构。

缺点是每一个类都必须配备一个克隆方法。

 

MMQQ聊天,一定要说些深情的话语了,

我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,

这就是我的情话prototype了。

原型模式:通过给出一个原型对象来指明所要创建的对象的类型,

然后用复制这个原型对象的方法创建出更多同类型的对象。

4原型模式类图

5.代码:

#include<iostream>

#include<string>

usingnamespacestd;

//原型模式允许动态的增加或减少产品类,

//产品类不需要非得有任何事先确定的等级结构,

//原始模型模式适用于任何的等级结构。

//缺点是每一个类都必须配备一个克隆方法。

 

//MMQQ聊天,一定要说些深情的话语了,

//我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,

//这就是我的情话prototype了。

//原型模式:通过给出一个原型对象来指明所要创建的对象的类型,

//然后用复制这个原型对象的方法创建出更多同类型的对象。

classResume

{

private:

   stringname,sex,age,timeArea,company;

public:

   Resume(strings)

   {

       name =s;

   }

   voidsetPersonalInfo(strings,stringa)

   {

       sex =s;

       age =a;

   }

   voidsetWorkExperience(stringt,stringc)

   {

       timeArea =t;

       company =c;

   }

   voiddisplay()

   {

       cout <<name <<" " <<sex <<" " <<age <<endl;

       cout <<"工作经历: " <<timeArea <<" " <<company <<endl <<endl;

 

   }

   Resume *clone()

   {

       Resume *b;

       b =newResume(name);

       b->setPersonalInfo(sex,age);

       b->setWorkExperience(timeArea,company);

       returnb;

   }

};

 

intmain()

{

   Resume *r = newResume("李彦宏");

   r->setPersonalInfo("","30");

   r->setWorkExperience("2007-2010","读研究生");

   r->display();

 

 

   Resume *r2 = r->clone();

   r2->setWorkExperience("2003-2007","读本科");

 

   r->display();

   r2->display();

 

   cin.get();

   return 0;

}

运行结果如下:

0 0
原创粉丝点击