1. My description
In my understanding, what is the prototype mode is to clone n objects. The cloned object should be exactly the same. Of course, you can modify the content of the cloned object. For C ++, the copy constructor is used. This mode is relatively simple, so it is no longer arrogant.
Ii. UML diagram
3. My code
#include<iostream>using namespace std;#include <string>class WorkExperience {public: WorkExperience(string n) : name(n) {} WorkExperience() {} void SetName(string n) { name = n;} string GetName() { return name; } void SetDate(string d) { date = d; } string GetDate() { return date; } void SetCompany (string c) { company = c; } string GetCompany() { return company; }private: string name; string date; string company;};class Resume : public WorkExperience {public: Resume (string n) : WorkExperience(n) {} Resume (Resume& r) { SetName(r.GetName()); SetDate(r.GetDate()); SetCompany(r.GetCompany()); } Resume* Clone() { return new Resume(*this); }};int main(){ Resume *p_resume1 = new Resume("george"); p_resume1->SetDate("2003"); p_resume1->SetCompany("xxx"); Resume *p_resume2 = p_resume1->Clone(); p_resume2->SetDate("2004"); p_resume2->SetCompany("yyy"); cout << "Resume 1: " << p_resume1->GetName() << " " << p_resume1->GetDate() << " " << p_resume1->GetCompany() << endl; delete p_resume1; cout << "Resume 2: " << p_resume2->GetName() << " " << p_resume2->GetDate() << " " << p_resume2->GetCompany() << endl; delete p_resume2;}
Design Pattern 6: Prototype Pattern