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
  • 相关阅读:
    JavaScript数字精度丢失问题总结
    前端开发调试线上代码的两款工具
    微信公众账号开发入门
    Chrome/Firefox 中头toFixed方法四舍五入兼容性问题
    GIT/node使用
    addEventListener 的另类写法
    JavaScript 动态插入 CSS
    JavaScript判断各浏览器CSS前缀的两种方式
    流程办理操作说明
    流程设计器(2)
  • 原文地址:https://www.cnblogs.com/onlycxue/p/3476718.html
Copyright © 2011-2022 走看看