C++中的设计模式:原型模式

本文最后更新于:2023年9月18日 凌晨

标题:C++中的设计模式:原型模式

简介:
原型模式是一种常用的设计模式,它允许创建新对象的同时又不需要知道其具体的类。

正文:

1. 原型模式的定义

原型模式包括两个角色:Prototype(原型)和ConcretePrototype(具体原型)。原型是一个抽象类,其中定义了一个克隆自身的接口,具体原型继承自原型,并实现了克隆接口。

1
2
3
4
5
6
7
8
9
10
11
class Prototype {
public:
virtual Prototype* clone() = 0;
};

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

2. 具体实现

1
2
3
4
5
6
7
8
9
10
11
12
13
int main() {
ConcretePrototype prototype;
ConcretePrototype* clone = dynamic_cast<ConcretePrototype*>(prototype.clone());

if (clone) {
std::cout << "Clone created successfully\n";
delete clone;
} else {
std::cout << "Clone failed\n";
}

return 0;
}

3. 原型模式的应用

原型模式常用于以下场景:

  • 当一个系统需要独立于其内容创建对象时。
  • 当一个对象只知道其接口,但需要在运行时指定其类时。

4. 原型模式与工厂模式的比较

原型模式与工厂模式都用于创建对象,但它们的关注点不同。工厂模式关注于如何创建对象,而原型模式关注于如何克隆对象。

结论:

原型模式是一种常用的设计模式,它允许创建新对象的同时又不需要知道其具体的类。在C++中,可以通过定义原型和具体原型类,以及实现克隆接口来实现原型模式。原型模式常用于需要独立于其内容创建对象的场景。


C++中的设计模式:原型模式
https://jinbilianshao.github.io/2023/09/18/C-中的设计模式:原型模式/
作者
连思鑫
发布于
2023年9月18日
许可协议