C++23种设计模式 原型
时间: 2023-10-02 21:03:46 浏览: 67
原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而不必提供一个显式的构造函数。这种模式用于创建重复的对象,同时保持性能。在 C++ 中,原型模式通常通过实现 clone() 函数来实现。
以下是一个简单的原型模式示例:
```c++
#include <iostream>
class Prototype {
public:
virtual ~Prototype() {}
virtual Prototype* clone() const = 0;
};
class ConcretePrototype : public Prototype {
public:
ConcretePrototype(int value) : m_value(value) {}
ConcretePrototype(const ConcretePrototype& other) : m_value(other.m_value) {}
virtual ConcretePrototype* clone() const override {
return new ConcretePrototype(*this);
}
int getValue() const { return m_value; }
private:
int m_value;
};
int main() {
ConcretePrototype prototype(42);
ConcretePrototype* clone = prototype.clone();
std::cout << "Original: " << prototype.getValue() << std::endl;
std::cout << "Clone: " << clone->getValue() << std::endl;
delete clone;
return 0;
}
```
在上面的示例中,我们定义了一个抽象基类 `Prototype`,它有一个纯虚函数 `clone()`,所有的具体原型类都必须实现此函数。我们还定义了一个具体原型类 `ConcretePrototype`,它实现了 `clone()` 函数以复制自身。在 `main()` 函数中,我们首先创建了一个 `ConcretePrototype` 对象,并通过调用 `clone()` 函数来创建一个新的克隆对象。最后,我们输出了原型对象和克隆对象的值,并在程序结束时释放了克隆对象的内存。
需要注意的是,克隆函数应该返回一个指向新创建对象的指针,因为克隆对象通常需要在堆上分配内存。此外,由于克隆函数通常需要访问私有成员变量,因此它应该是原型类的友元函数。