码迷,mamicode.com
首页 > 编程语言 > 详细

【c++设计模式】原型模式

时间:2019-12-07 16:02:10      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:c++   方法   构造   void   是什么   拷贝构造函数   函数   创建型   oid   

创建型模式

5)原型模式

这种模式主要是用于获取当前实例的拷贝。
假如当前基类有很多派生类,而我们只有基类指针而无法确定指向对象时,是无法直接执行拷贝动作的。因为拷贝时需要显式调用该派生类的拷贝构造函数,也就必须要确定派生类的类型。
为了解决这个问题,在基类中添加clone方法,通过return new (*this)返回当前对象。

class Juice{
public:
    virtual void show() = 0;
    virtual Juice* clone() = 0;
};

class AppleJuice : public Juice{
public:
    void show(){
        cout<< "this is applejuice"<<endl;
    }
    Juice* clone(){
        return new AppleJuice(*this);
    }
};
class OrangeJuice: public Juice{
public:
    
    void show(){
        cout<<"this is orangejuice"<<endl;
    }
    Juice* clone(){
        return new OrangeJuice(*this);
    }
};

int main(){
    
    Juice* p1 = new OrangeJuice();
    
    /*
     传了很久很久 以至于忘了p1是什么
     */
    
    //Juice* p2 = p1->clone();
    p1->show();
}

【c++设计模式】原型模式

标签:c++   方法   构造   void   是什么   拷贝构造函数   函数   创建型   oid   

原文地址:https://www.cnblogs.com/corineru/p/12001763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!