码迷,mamicode.com
首页 > 其他好文 > 详细

原型模式

时间:2014-08-28 22:23:26      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   ar   art   div   

【1】什么是原型模式?

原型模式即复制,或者克隆模式。

【2】原型模式代码示例:

代码示例1:

bubuko.com,布布扣
 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 class Prototype
 6 {
 7 private:
 8     string str;
 9 public:
10     Prototype(string s)
11     {
12         str = s;
13     }
14     Prototype()
15     {
16         str = "";
17     }
18     void show()
19     {
20         cout << str << endl;
21     }
22     virtual Prototype *clone() = 0;
23 };
24 
25 class ConcretePrototype1 : public Prototype
26 {
27 public:
28     ConcretePrototype1(string s) : Prototype(s)
29     {}
30     ConcretePrototype1(){}
31     virtual Prototype *clone()
32     {
33         ConcretePrototype1 *p = new ConcretePrototype1();
34         *p = *this;
35         return p;
36     }
37 };
38 
39 
40 class ConcretePrototype2 : public Prototype
41 {
42 public:
43     ConcretePrototype2(string s) : Prototype(s)
44     {}
45     ConcretePrototype2(){}
46     virtual Prototype *clone()
47     {
48         ConcretePrototype2 *p = new ConcretePrototype2();
49         *p = *this;
50         return p;
51     }
52 };
53 
54 int main()
55 {
56     ConcretePrototype1 *test = new ConcretePrototype1("小李");
57     ConcretePrototype2 *test2 = (ConcretePrototype2 *)test->clone();
58     test->show();
59     test2->show();
60     return 0;
61 }
View Code

代码示例2:

bubuko.com,布布扣
 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4  
 5 class Resume
 6 {
 7 private:
 8     string name, sex, age, timeArea, company;
 9 public:
10     Resume(string s)
11     {
12         name = s;
13     }
14     void setPersonalInfo(string s, string a)
15     {
16         sex = s;
17         age = a;
18     }
19     void setWorkExperience(string t, string c)
20     {
21         timeArea = t;
22         company = c;
23     }
24     void display()
25     {
26         cout << name << "  " << sex << "  " << age << endl;
27         cout << "工作经历:  " << timeArea << "  " << company << endl;
28 
29     }
30     Resume *clone()
31     {
32         Resume *b = new Resume(name);
33         b->setPersonalInfo(sex, age);
34         b->setWorkExperience(timeArea, company);
35         return b;
36     }
37 };
38 
39 
40 int main()
41 {
42     Resume *r = new Resume("李俊宏");      
43     r->setPersonalInfo("","26");
44     r->setWorkExperience("2007-2010","读研究生");
45     r->display();
46     
47 
48     Resume *r2 = r->clone();
49     r2->setWorkExperience("2003-2007","读本科");
50     
51     r->display();
52     r2->display();
53     
54     return 0;
55 }
View Code

 

Good   Good   Study,  Day   Day  Up.

顺序   选择   循环   总结

原型模式

标签:style   blog   http   color   os   io   ar   art   div   

原文地址:http://www.cnblogs.com/Braveliu/p/3942411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!