设计模式学习(原型模式)
2016-07-07 14:32
239 查看
原型模式是一种对象创建型模式, 它采取复制原型对象的方法来创建对象的实例。使用原型模式创建的实例,具有与原型一样的数据。
原型模式适用于一个复杂对象,具有自我复制功能,统一一套接口。
原型模式适用于一个复杂对象,具有自我复制功能,统一一套接口。
#include <iostream> #include <string> using namespace std; class Person { public: virtual Person* Clone() = 0; virtual void printT() = 0; }; class JavaProgrammer : public Person { public: JavaProgrammer() { this->m_age = 0; this->m_resume = NULL; } JavaProgrammer(string name, int age) { this->m_age = age; this->m_name = name; this->m_resume = NULL; } ~JavaProgrammer() { if (!m_resume) { delete m_resume; m_resume = NULL; } } Person* Clone() { JavaProgrammer *p = new JavaProgrammer; p->m_age = this->m_age; p->m_name = this->m_name; p->m_resume = NULL; if (this->m_resume) { //p->m_resume = new char[strlen(this->m_resume)]; //strcpy(p->m_resume, this->m_resume); } return p; } void printT() { cout << "name: " << m_name << endl; cout << "age: " << m_age << endl; cout << "resume: " << &m_resume << endl; } private: string m_name; int m_age; char *m_resume; }; int main() { Person *person = new JavaProgrammer("Bob", 26); Person *copy = person->Clone(); person->printT(); copy->printT(); return 0; }
相关文章推荐
- 安卓转场动画
- Android中的searchView去掉前面的搜索圈
- QT QTableView用法小结
- 微信登录和微信充值
- 使用javax.mail 发送邮件 带附件
- 利用自定义xml属性指定来RecyclerView的LayoutManager
- 以“掌上东航”为例,论混合开发在企业级项目中的实践
- 长寿之道
- hdu 5021 Revenge of kNN II(树状数组,离散化,二分)
- java多线程基础(3)-调度方式之暂停当前线程方式2-放弃
- elasticsearch修改mapping + 导出/导入数据
- hdu1827 Summer Holiday(scc应用)
- 为何创建线程推荐_beginthreadex()函数而非CreateThread()?
- iOS开发中@property的属性weak nonatomic strong readonly等介绍
- 2016年前端技术展望
- PS文字实现左右对齐,全部对齐按钮灰色怎么办?
- 1. Two Sum
- 多次为 'query' 指定了列 'ChargeId'。
- Eclipse常用快捷键
- 与