【C++设计模式】原型模式 浅拷贝

/* 小鱼号的代码日志
 * 设计模式
 * 原型模式
 * 用原型实例指定创建对象的种类,并且
 * 通过拷贝这些原型,创建新的对象
 * 一个对象在创建另外一个可定制的对象
 * 无需知道创建的细节
 * 克隆羊
 */

#include<iostream>
#include<list>
using namespace std;

class Animal
{
public:
    Animal(string name,int age)
    {
        m_name = name;
        m_age = age;
    }
    Animal(const Animal& animal)
    {
        m_name = animal.m_name;
        m_age = animal.m_age;
    }
    void showInfo()
    {
        cout << "name:" << m_name << " age:" << m_age << endl;
    }
    virtual Animal* clone() = 0;
protected:
    string m_name;
    int m_age;
};

class Sheep:public Animal
{
public:
    Sheep(string name,int age) :Animal(name,age)
    {
    }
    Sheep(const Sheep& animal) :Animal(animal)
    {
    }
    Animal* clone()
    {
        return new Sheep(*this);
    }
};

void testPrototype()
{
    cout << "prorotype patterns" << endl;
    Animal* sheep = new Sheep("tom",12);
    sheep->showInfo();
    Animal* cloneSheep = sheep->clone();
    cloneSheep->showInfo();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 简介 所谓原型模式就是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。举一个简单的例子,一个人想要...
    PeterZ1997阅读 363评论 0 1
  • “对象创建”模式 通过“对象创建”模式绕开直接new一个具体的类型,来避免对象创建(new)过程中所导致的紧耦合(...
    故事狗阅读 995评论 0 1
  • 原型模式:一种创建型设计模式 应用场景:一个基类,有很多派生类,在实际开发中,经常会使用一个基类指针,将其指向不同...
    JeremyYv阅读 361评论 0 3
  • 1.原型模式简介    原型模式的核心思想是,通过拷贝指定的“原型实例(对象)”,创建跟该对象一样的新对象。简单理...
    一路向后阅读 521评论 0 0
  • 原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式结构图 原型模式基本代码 原型...
    涵仔睡觉阅读 1,598评论 0 0

友情链接更多精彩内容