原型模式(ProtoType)

1.目的

    当需要从一个对象copy出另外一个对象时,可以使用原型模式,本质上是调用的copy构造函数

    与copy构造函数的区别,可能就是不需要显示的生成对象,而是通过函数调用(?)


2.代码

    prototype.h

#ifndef PROTOTYPE_H_
#define PROTOTYPE_H_
#include <string>
#include <iostream>
using namespace std;

class Resume
{
public:
	Resume(string name, string sex, string age):name(name), sex(sex),age(age)
	{}

	Resume(const Resume& arg)
	{
		this->name = arg.name;
		this->age = arg.age;
		this->sex = arg.sex;
		this->workExperience = arg.workExperience;
	}

	void setWorkExperience(string arg)
	{
		workExperience = arg;
	}

	Resume& clone() const
	{
		return *(new Resume(*this));
	}

	void show()
	{
		cout<<name<<" "<<sex<<" "<<age<<endl;
		cout<<workExperience<<endl;
	}
private:
	string name;
	string sex;
	string age;
	string workExperience;
};

#endif /* PROTOTYPE_H_ */

prototype.cpp

#include "ProtoType.h"

void protoType()
{
	Resume a("Tom", "male", "30");
	a.setWorkExperience("1998-2000, Company A");

	Resume b = a.clone();
	b.setWorkExperience("2000-2002, Company B");

	Resume c = a.clone();
	c.setWorkExperience("2002-2004, Company C");

	a.show();
	b.show();
	c.show();
}

执行效果:

Tom male 30
1998-2000, Company A
Tom male 30
2000-2002, Company B
Tom male 30
2002-2004, Company C



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值