DP书上的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。其中有一个词很重要,那就是拷贝。可以说,拷贝是原型模式的精髓所在。举个现实中的例子来介绍原型模式。找工作的时候,我们需要准备简历。假设没有打印设备,因此需手写简历,这些简历的内容都是一样的。这样有个缺陷,如果要修改简历中的某项,那么所有已写好的简历都要修改,工作量很大。随着科技的进步,出现了打印设备。我们只需手写一份,然后利用打印设备复印多份即可。如果要修改简历中的某项,那么修改原始的版本就可以了,然后再复印。原始的那份手写稿相当于是一个原型,有了它,就可以通过复印(拷贝)创造出更多的新简历。这就是原型模式的基本思想。下面给出原型模式的UML图,以刚才那个例子为实例。
- //父类
- class Resume
- {
- protected:
- char *name;
- public:
- Resume() {}
- virtual ~Resume() {}
- virtual Resume* Clone() { return NULL; }
- virtual void Set(char *n) {}
- virtual void Show() {}
- };
[cpp] view plain copy print
- class ResumeA : public Resume
- {
- public:
- ResumeA(const char *str); //构造函数
- ResumeA(const ResumeA &r); //拷贝构造函数
- ~ResumeA(); //析构函数
- ResumeA* Clone(); //克隆,关键所在
- void Show(); //显示内容
- };
- ResumeA::ResumeA(const char *str)
- {
- if(str == NULL) {
- name = new char[1];
- name[0] = ‘ ’;
- }
- else {
- name = new char[strlen(str)+1];
- strcpy(name, str);
- }
- }
- ResumeA::~ResumeA() { delete [] name;}
- ResumeA::ResumeA(const ResumeA &r) {
- name = new char[strle
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!