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

10-11 04:42