zoukankan      html  css  js  c++  java
  • c++原型模式(Prototype)

    原型模式是通过已经存在的对象的接口快速方便的创建新的对象。

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Prototype
    {
    public:
        virtual Prototype *Clone() = 0;
        virtual void display() = 0;
    };
    
    class Prototype1:public Prototype
    {
    protected:
         string name;
         int id;
    public:
        Prototype1(string name, int id)
        {
            this->name = name;
            this->id = id;
        }
        Prototype1(const Prototype1 &type)
        {
            this->name = type.name;
            this->id = type.id;
        }
        virtual void display()
        {
            cout<< "my name and id are :" << this->id << " "<<this->name <<endl;
        }
    
        Prototype *Clone()
        {
            return new Prototype1(*this);
        }
    
    };
    class Prototype2:public Prototype
    {
    protected:
        string name;
    public:
        Prototype2(string name)
        {
            this->name = name;
        }
        Prototype2(const Prototype2 &type)
        {
            this->name = type.name;
        }
        virtual void display()
        {
            cout << "my name is :" << this->name << endl;
        }
        Prototype *Clone()
        {
            return new Prototype2(*this);
        }
    
    };
    
    int main()
    {
        Prototype *obj1 = new Prototype1("mafuli",1);
        Prototype *obj2 = obj1->Clone();
        Prototype *obj3 = obj2->Clone();
    
        obj2->display();
        obj3->display();
        
        Prototype *obj4 = new Prototype2("cxue");
        Prototype *obj5 = obj4->Clone();
        Prototype *obj6 = obj5->Clone();
    
        obj4->display();
        obj5->display();
        obj6->display();
    
    
        getchar();
        return 0;
    }

    输出信息为:

    my name and id are :1 mafuli
    my name and id are :1 mafuli
    my name is :cxue
    my name is :cxue
    my name is :cxue
  • 相关阅读:
    素数筛选法
    一种美-无法言语
    动态规划-钢条切割问题
    动态规划《开篇》
    判断两序列是否为同一棵二叉搜索树
    C++字符串转化为数字的库函数
    C++字符串类型和数字之间的转换
    遍历二叉树的非递归实现
    关于二叉树的问题1-已知前序,中序求后序遍历
    获取回车事件
  • 原文地址:https://www.cnblogs.com/onlycxue/p/3476718.html
Copyright © 2011-2022 走看看