我认为这是一个相当普遍的问题。有一个名为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/