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
  • 相关阅读:
    权值线段树&&可持久化线段树&&主席树
    扩展中国剩余定理(EXCRT)快速入门
    jquery学习记录
    隐藏vbs执行cmd命令的窗口
    eclipse打开出错 Error: opening registry key 'SoftwareJavaSoftJava Runtime Environment'
    正则表达式学习总结
    什么是xss攻击?
    什么是浏览器的同源策略?
    关于axios的封装
    关于递归。
  • 原文地址:https://www.cnblogs.com/onlycxue/p/3476718.html
Copyright © 2011-2022 走看看