人生如逆旅, 我亦是行人。|
2022-07-26 16:17阅读: 313评论: 0推荐: 0

C++原型模式

意图

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

适用性

  • 当要实例化的类是在运行时刻指定时,如图,通过动态装载;或者
  • 为了避免创建一个与产品类层次平行的工厂类层次时;或者
  • 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便些

示意性代码

#include <iostream>

using namespace std;

class Prototype {
public:
    Prototype() { }
    virtual ~Prototype() { }

    virtual Prototype* clone() = 0;
};

class ConcretePrototype : public Prototype {
public:
    ConcretePrototype() : m_counter(0) { }
    ~ConcretePrototype() { }

    ConcretePrototype(const ConcretePrototype& rhs) {
        m_counter = rhs.m_counter;
    }

    Prototype* clone() override {
        return new ConcretePrototype(*this);
    }

private: 
    int m_counter;
};

int main() {
    ConcretePrototype* conProA = new ConcretePrototype();
    ConcretePrototype* conProB = (ConcretePrototype*)conProA->clone();

    delete conProA;
    conProA = nullptr;

    delete conProB;
    conProB = nullptr;
}

参考

  1. C++设计模式——原型模式

本文作者:岁月飞扬

本文链接:https://www.cnblogs.com/jerry-1015/p/16521475.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   岁月飞扬  阅读(313)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起