c++ - 设计界面

标签 c++ interface

我认为这是一个相当普遍的问题。有一个名为IService的接口(interface),以及一些实现这个接口(interface)的派生类;服务A、服务B、服务C和服务D。

ServiceA 和ServiceB 需要一个名为getSomeType() 的函数来暴露,但是在其他派生类中不需要这个函数。 ServiceD 还需要公开其他派生类不需要的另一个函数。我应该如何解决这个问题?我觉得使用 dynamic_cast 不是正确的方法,是吗?我还考虑过创建一个新接口(interface),以便 ServiceA 和 ServiceB 实现两个接口(interface)。

class IService
{
public:
   virtual IService() {};

   virtual void start() = 0;

   virtual void stop() = 0;
};

class ServiceA : public IService
{
public:
    void start() override;

    void stop() override;

    ISomeType * getSomeType();
};

最佳答案

从IService派生IServiceAB,从IServiceAB派生ServiceA和ServiceB,从IService派生ServiceD。

另一种方法是查看装饰器模式(设计模式)。

关于c++ - 设计界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34547713/

相关文章:

c++ - 管理在信号中传递给 QML 的 C++ QObject 的生命周期

C++ 将四个无符号字符转换为一个无符号整数

python - 向客户端呈现 REST Web 服务界面

java - 我应该实现哪个接口(interface)才能有解析方法

java - 使用带有 List 作为方法参数的 java 泛型的编译器错误并抛出泛型异常

c++ - 如何将工作目录更改为程序的位置

c++ - C++ union 中的两个数组

go - 具有结构体的结构体指针的接口(interface)的函数赋值显示不同的值

c++ - 多核机器上的多个程序实例

Java ORM : Multiple (interface) inheritance