gpt4 book ai didi

c++ - C++中的原型(prototype)设计模式和复制构造函数有什么区别

转载 作者:可可西里 更新时间:2023-11-01 15:40:01 24 4
gpt4 key购买 nike

我想知道什么时候应该使用原型(prototype)设计模式。这是我理解的原型(prototype)示例:

class Prototype
{
public:
virtual Prototype* clone() = 0;
...
};

class ConcretePrototype : public Prototype
{
public:
Prototype* clone() override { ... }
};

// Usage:
ConcretePrototype proto;
auto protPtr = proto.clone();

哪里有问题:为什么这比:

class Obj
{
public:
Obj();

Obj(const Obj&);
Obj& operator = (const Obj& other);
};

Obj o;
Obj o2 = o;

那么我应该什么时候真正使用 Prototype?

最佳答案

复制构造函数是语言的一个元素。

原型(prototype)是一种设计模式,用于基于某些现有实例生成(多态)对象。

使用前者来实现后者会很困难,因为复制构造函数旨在在知道对象的确切实例时使用,而在可能有任何可能的实现时使用原型(prototype)一些接口(interface),你只想获得完全相同实现的新对象,而不是诉诸一些奇怪的转换和检查方法。

假设您有接口(interface) I 和实现 AB。在某些时候,您将获得实现 I 的对象 i。也许您不想修改它,而是更愿意获取新实例,然后对其进行一些修改。当您不知道 i 的确切类别时,如何实现?原型(prototype)模式是该问题的一种解决方案:I* i2 = i.clone();

关于c++ - C++中的原型(prototype)设计模式和复制构造函数有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35939432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com