19原型模式
1原型模式的核心內容是:
A:使用一個clone方法復制自己的屬性,并將自己返回
2原型模式的作用:就是一個復制自己的過程。
3原型模式具體描述
原型模式允許動態的增加或減少產品類,
產品類不需要非得有任何事先確定的等級結構,
原始模型模式適用于任何的等級結構。
缺點是每一個類都必須配備一個克隆方法。
?
跟MM用QQ聊天,一定要說些深情的話語了,
我搜集了好多肉麻的情話,需要時只要copy出來放到QQ里面就行了,
這就是我的情話prototype了。
原型模式:通過給出一個原型對象來指明所要創建的對象的類型,
然后用復制這個原型對象的方法創建出更多同類型的對象。
4原型模式類圖
5.代碼:
#include<iostream>
#include <string>
using namespace std;
//原型模式允許動態的增加或減少產品類,
//產品類不需要非得有任何事先確定的等級結構,
//原始模型模式適用于任何的等級結構。
//缺點是每一個類都必須配備一個克隆方法。
?
//跟MM用QQ聊天,一定要說些深情的話語了,
//我搜集了好多肉麻的情話,需要時只要copy出來放到QQ里面就行了,
//這就是我的情話prototype了。
//原型模式:通過給出一個原型對象來指明所要創建的對象的類型,
//然后用復制這個原型對象的方法創建出更多同類型的對象。
class Resume
{
private:
??? string name, sex, age, timeArea, company;
public:
??? Resume(string s)
??? {
??????? name = s;
??? }
??? void setPersonalInfo(string s, string a)
??? {
??????? sex = s;
??????? age = a;
??? }
??? void setWorkExperience(string t, string c)
??? {
??????? timeArea = t;
??????? company = c;
??? }
??? void display()
??? {
??????? cout << name << "? " << sex << "? " << age << endl;
??????? cout << "工作經歷:? " << timeArea << "? " << company << endl << endl;
?
??? }
??? Resume *clone()
??? {
??????? Resume *b;
??????? b = new Resume(name);
??????? b->setPersonalInfo(sex, age);
??????? b->setWorkExperience(timeArea, company);
??????? return b;
??? }
};
?
int main()
{
??? Resume *r = new Resume("李彥宏");
??? 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;
}
運行結果如下:
總結