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;
}
参考
本文作者:岁月飞扬
本文链接:https://www.cnblogs.com/jerry-1015/p/16521475.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步