C++设计模式浅识原型模式

定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。

原型模式主要考虑的深复制与浅复制,在c++++的类设计中,拷贝构造函数就是浅复制,当重载赋值运算符时就是深复制。

浅复制:被复制对象的所有变量都含有原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。 

深复制:把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。

测试用例:

[code]int main(){    //生成对象    ConcretePrototype * conProA = new ConcretePrototype();    //复制自身    ConcretePrototype *conProB = conProA->Clone();   //先clone后调用拷贝构造函数, Output: clone constructor    delete conProA;    conProA = NULL;    delete conProB;    conProB = NULL;    return 0;}

原型模式(Prototype)实现

[code]//接口class Prototype{public:    Prototype(){}    virtual ~Prototype(){}    virtual Prototype *Clone() = 0;};//实现class ConcretePrototype: public Prototype{public:    ConcretePrototype(): m_counter(0) {}    virtual ~ConcretePrototype(){}    //拷贝构造函数    ConcretePrototype(const ConcretePrototype &rhs){        std::cout << "constructor\n";        m_counter = rhs.m_counter;    }    //复制自身    virtual ConcretePrototype *Clone(){        //调用拷构造函数        std::cout << "clone\n";        return new ConcretePrototype(*this);    }private:    int m_counter;};

以上就是C++设计模式浅识原型模式的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1431923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 05:55:32
下一篇 2025年12月17日 05:55:38

相关推荐

发表回复

登录后才能评论
关注微信