我有一个我认为是相当普遍的问题。有一个名为IService
的接口,还有一些实现该接口的派生类。 ServiceA,ServiceB,ServiceC和ServiceD。
ServiceA和ServiceB需要公开一个名为getSomeType()
的函数,但在其他派生类中则不需要此函数。另外,ServiceD还需要其他公开类不需要的另一个函数。我应该如何解决这个问题?我觉得使用dynamic_cast
不是正确的方法,不是吗?我还考虑过创建一个新接口,以便ServiceA和ServiceB实现两个接口。
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,从IService派生ServiceS和ServiceS,并从IService派生ServiceD。
另一种方法是查看装饰器模式(设计模式)。
关于c++ - 设计界面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34547713/