// 5_Prototype_0.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
/**
* 原型模式(Prototype): 用原型实例指定创建对象的种类,并且通过拷贝这些
* 原型创建新的对象。
**/
// 简历
class Resume
{
private:
string _Name;
string _Sex;
string _Age;
string _TimeArea;
string _Company;
public:
Resume(string name) { _Name = name; }
void SetPersonalInfo(string sex, string age)
{
_Sex = sex;
_Age = age;
}
void SetWorkExperience(string timeAread, string company)
{
_TimeArea = timeAread;
_Company = company;
}
public:
// 显示
void Display()
{
cout << _Name.c_str() << " " << _Sex.c_str() << " " << _Age.c_str() << endl;
cout << _TimeArea.c_str() << " " << _Company.c_str() << endl;
}
Resume* Clone()
{
return new Resume(*this);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Resume* a = new Resume("大L");
a->SetPersonalInfo("男", "29");
a->SetWorkExperience("1990-2000", "XXX 公司");
Resume* b = a->Clone();
b->SetWorkExperience("2000-2010", "YYY 公司");
Resume* c = a->Clone();
c->SetWorkExperience("2010-2020", "ZZZ 公司");
cout << "a份简历:" << endl;
a->Display();
cout << "\nb份简历:" << endl;
b->Display();
cout << "\nc份简历:" << endl;
c->Display();
return 0;
}
运行结果: