美文网首页
原型模式,必须深拷贝啊

原型模式,必须深拷贝啊

作者: 张霸天 | 来源:发表于2017-03-06 17:33 被阅读0次

#include <stdio.h>
#include <iostream>
using namespace std;


class ICloneable{
public:
    ICloneable(){};
    virtual ~ICloneable(){};
    virtual ICloneable * Clone(){return NULL;};
};

class WorkExperience: public ICloneable {
private:
    string workData;
    string company;
public:
    WorkExperience(string workdata,string company):workData(workdata),company(company){};
    ~WorkExperience(){};
    
    string WorkData() {
        return workData;
    }
    
    void setWorkData(string workdata) {
        workData = workdata;
    }
    
    string Company() {
        return company;
    }
    
    void setCompany(string company) {
        this->company = company;
    }
    
    WorkExperience * Clone(){
        WorkExperience * e = new WorkExperience(workData,company);
        return e;
    };
};

class Resume:public ICloneable {
private:
    string name;
    WorkExperience *experience;
public:
    Resume(){}
    Resume(string name,string workdata,string company){
        this->name = name;
        experience = new WorkExperience(workdata,company);
    };
    
    string WorkData() {
        return experience->WorkData();
    }
    
    void setWorkData(string workdata) {
        experience->setWorkData(workdata);
    }
    
    string Company() {
        return experience->Company();
    }
    
    void setCompany(string company) {
        experience->setCompany(company);
    }
    
    Resume * Clone(){
        Resume * resume = new Resume();
        resume->name = name;
        WorkExperience * e = experience->Clone();
        (*resume).experience = e;
        return resume;
    }
    void printResume(){
        cout<< name<<"\t"<<experience->Company()<<"\t"<<experience->WorkData()<<endl;
    }
};




void testLesson6() {
    Resume * resume = new Resume("zhang","100","akka");
    Resume * resume2 = resume->Clone();
    resume->setCompany("baidu");
    resume->printResume();
    resume2->printResume();
}

深拷贝没有什么多说的

相关文章

  • 原型模式,必须深拷贝啊

    深拷贝没有什么多说的

  • 初始设计模式之原型模式

    原型模式是什么? 原型模式怎么用?浅拷贝深拷贝 原型模式再理解 一、原型模式是什么? ​ 原型模式是一种创建型设计...

  • 原型模式

    一、 原型模式 原型模式:用原型实指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 涉及浅拷贝与深拷贝问题。...

  • Android Kotlin 设计模式之原型模式

    前言 继续填坑,这次是原型模式 什么是原型模式 首先在java里面是存在深拷贝和浅拷贝的 深拷贝: 完全复制生成一...

  • 设计模式

    经典面试题 1)使用UML类图画出原型模式核心角色2)原型模式的深拷贝和浅拷贝是什么,并写出深拷贝的两种写法(重写...

  • 关于继承

    继承的实现方法 属性拷贝 浅拷贝 深拷贝 原型继承 原型式继承 原型链继承 组合继承(深拷贝+优化后的原型式继承)...

  • 设计模式《原型模式》

    引言   回顾上一节我们讲的状态模式,这节我们来讲一下原型模式。和原型模式相关的2个概念:浅拷贝和深拷贝。 示例地...

  • 原型模式-深拷贝

    深拷贝基本介绍 复制对象的所有基本数据类型的成员变量值 为所有引用数据类型的成员变量申请存储空间,并复制每个引用数...

  • 还为那些设计模式烦恼吗-原型模式

    原型模式 浅拷贝 调用: 结果: 但是,假如这样调用: 结果: 上述就是浅拷贝 深拷贝 就是将上面代码的标记1处,...

  • 设计模式-prototype模式

    当需要从内存中构造新的对象时,可以使用原型模式。 例子 原型模式构造有浅拷贝和深拷贝两种方式 这里调用Data的c...

网友评论

      本文标题:原型模式,必须深拷贝啊

      本文链接:https://www.haomeiwen.com/subject/yeyugttx.html