gpt4 book ai didi

c++ - 使用 C++ 接口(interface)的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:03 29 4
gpt4 key购买 nike

我有一个接口(interface)类类似于:

class IInterface
{
public:

virtual ~IInterface() {}

virtual methodA() = 0;

virtual methodB() = 0;

};

然后我实现接口(interface):

class AImplementation : public IInterface
{
// etc... implementation here
}

当我在应用程序中使用接口(interface)时,最好创建具体类 AImplementation 的实例。例如。

int main()
{
AImplementation* ai = new AIImplementation();
}

或者像下面这样在接口(interface)中放置一个工厂“创建”成员函数是否更好:

class IInterface
{
public:

virtual ~IInterface() {}

static std::tr1::shared_ptr<IInterface> create(); // implementation in .cpp
virtual methodA() = 0;

virtual methodB() = 0;

};

然后我就可以像这样在 main 中使用接口(interface)了:

int main()
{
std::tr1::shared_ptr<IInterface> test(IInterface::create());
}

第一个选项似乎是常见的做法(不能说是对的)。然而,第二个选项来自“Effective C++”。

最佳答案

使用接口(interface)的最常见原因之一是您可以“针对抽象进行编程”而不是针对具体实现。

这样做的最大好处是它允许更改部分代码,同时最大限度地减少对剩余代码的更改。

因此,虽然我们不知道您正在构建的内容的完整背景,但我会选择接口(interface)/工厂方法。

话虽如此,在较小的应用程序或原型(prototype)中,我通常从具体的类开始,直到我了解在何处/是否需要接口(interface)。接口(interface)可以引入一定程度的间接性,这对于您正在构建的应用程序的规模来说可能不是必需的。

由于应用程序较小,我发现我实际上并不需要自己的自定义界面。与许多事情一样,您需要根据具体情况权衡成本和 yield 。

关于c++ - 使用 C++ 接口(interface)的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1198055/

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