原型模式
来源:互联网 发布:电影语音翻译软件 编辑:程序博客网 时间:2024/06/04 19:58
1、概念
原型模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例,使用原型模式创建的实例,与原型具有一样的数据。
(1)、由原型对象自身创建膜表对象
(2)、目标对象是原型对象的一个克隆
(3)、根据对象克隆深度层次的不同,有浅度克隆和深度克隆。
2、适用情况:
一个复杂对象,具有自我复制功能,统一一套接口。
3、代码实例:
#include<iostream>#include<string>using namespace std;class Person{public:virtual Person*clone()=0;virtual void printT() = 0;};class CPlusPlusProgram:public Person{public:CPlusPlusProgram(){m_name = "";m_age = 0;m_p = NULL;setReMeme("");}CPlusPlusProgram(string name, int age,char *p){m_name = name;m_age = age;m_p = NULL;setReMeme(p);}// 浅拷贝Person *clone(){CPlusPlusProgram *tmp = new CPlusPlusProgram;*tmp = *this;return tmp;}void setReMeme(char *p){if (m_p!=NULL){delete m_p;}m_p = new char[strlen(p) + 1];strcpy(m_p,p);}// 深拷贝Person *clone(){CPlusPlusProgram *tmp = new CPlusPlusProgram;tmp->m_name = this->m_name;tmp->m_age = this->m_age;int len = strlen(this->m_p);if (tmp->m_p != NULL){delete tmp->m_p;tmp->m_p = NULL;}tmp->m_p = new char[len + 1];strcpy(tmp->m_p, this->m_p);return tmp;}void printT(){cout << "m_name: " << m_name << " m_age: " << m_age<<" m_p: " <<&m_p<< endl;}private:string m_name;int m_age;char *m_p;};int main(void){Person *c1 = new CPlusPlusProgram("张三",20,"AAA");c1->printT();Person *c2 = c1->clone();c2->printT();return 0;}
阅读全文
0 0
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型 模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 566. Reshape the Matrix
- 开源数据库迁移工具 – Flyway
- find命令 -- 基于时间查找
- 怎么找回回收站已经删除的文件
- Maven之(三)Maven插件
- 原型模式
- 成为java高级程序员需要掌握哪些
- selenium自动化测试面试题
- 全新的松松软文平台上线公告
- STM32 大小端模式 与 堆栈及其增长方向分析
- JAVA gc垃圾回收机制
- UVA
- Vue2.0 新手入门 — 从环境搭建到发布
- 学界or业界?科技公司狂挖高校AI学者:涸泽而渔还是产学双赢 | 深度