gpt4 book ai didi

c++ - 设计界面

转载 作者:行者123 更新时间:2023-11-28 02:14:11 25 4
gpt4 key购买 nike

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

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