gpt4 book ai didi

c++ - C++ 中的 Release() 或工厂销毁函数

转载 作者:行者123 更新时间:2023-11-28 06:19:54 25 4
gpt4 key购买 nike

我正在用 C++ 编写一个 dll 库。它只会导出一些具有纯虚拟接口(interface)的工厂创建功能。现在我想知道哪种设计更好,例如我们有这样的东西:

API_EXPORT IFactory* CreateFactory();
API_EXPORT Destroy(IFactory* pFactory);

class IFactory
{
public:
virtual InterfaceA* CreateA() = 0;
virtual InterfaceB* CreateB() = 0;
virtual InterfaceC* CreateC() = 0;
virtual InterfaceD* CreateD() = 0;
// virtual void Destory(InterfaceA* p) = 0;
}

假设我从工厂获取接口(interface),完成后我有两种方法将其删除。

IFactory* myFactory = CreateFactory();
InterfaceA* myInterface = myFactory->CreateA();
......
......
Method 1:
myFactory->Destroy(myInterface);

Method 2:
class InterfaceA
{
....
virtual void Release() = 0;
}
CImplementationA::Release()
{
delete this;
}
myInterface->Release();

第二种方法似乎更优雅,因为用户不必在任何地方都持有 myFactory 对象。但如果我错了,请纠正我。

最佳答案

我更喜欢第二种方法。一个对象一旦产生,就应该按照 OOP 的指导方针进行 self 管理。我认为没有理由将破坏的责任交给其他人,例如工厂功能。

关于c++ - C++ 中的 Release() 或工厂销毁函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29503817/

25 4 0
文章推荐: c++ - Qt:显示实时视频,一次一帧
文章推荐: java - 在 C++ 中正确表示 Java 的 ArrayList