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
  • 相关阅读:
    UT斯达康 G680手机那些事儿
    VoIP使用总结
    Test
    Remove "Click here to enable Instant Search"
    常用的在线播放(电台和电视台)
    Sipdroid Error “Registration failed (404 not found)”
    通过Word 2007发布Blog
    【Go反射】读取对象
    【Go反射】修改对象
    【爬虫】callback=jQuery+数字在爬虫中如何模拟
  • 原文地址:https://www.cnblogs.com/onlycxue/p/3476718.html
Copyright © 2011-2022 走看看