首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实现接口中尚未实现的方法的新组件

实现接口中尚未实现的方法的新组件
EN

Stack Overflow用户
提问于 2019-02-19 06:49:43
回答 1查看 47关注 0票数 0

我有两个类文件(WallSwitchProximitySwitch) -让我们假设它们是第三方提供的组件-它们从我在我的核心消费系统中构建的IUserController接口实现方法On()Off()

我还有三个类-也是第三方提供的-即CeilingFanLightbulbCCTVCamera,它们从ICeilingComponent接口实现方法,这是核心系统的一部分。这些ICeilingComponent-implementing类被实例化并注入到IUserController继承类中,例如:

代码语言:javascript
运行
复制
ICeilingComponent component = new LightBulb();

IUserController controller = new WallSwitch(component);

然后..。

代码语言:javascript
运行
复制
controller.On();

controller.Off();

大家都很开心。

现在,我有了一个由第三方提供的新组件DimmerSwitch,它还实现了On()Off()IUserController方法,但是DimmerSwitch类还实现了IncreasePower(int amount)DecreasePower(int amount)方法,这只影响CeilingFan和(可调光)代码,而不影响< Lightbulb >d22。

我希望在核心系统中适应这一点,但我无法理解如何做到这一点,而不迫使其他第三方组件按照我与它们签约实现的接口的描述来更改其结构。这是最重要的一点。必须有一种方法可以在核心系统内处理此问题,而不会影响其他地方的更改。

我没有正确理解哪些设计模式或接口方法?

我曾希望把这一切都写下来,以某种方式为我提供一个解决方案。但不是的。也许我现在不能只见树木不见森林。我已经搜索了我认为合适的术语。这肯定是一个常见的问题。尽管让我看起来像个笨蛋。

附言:这显然不是一个现实世界的问题--我当然不希望鼓励关于电压的讨论。但这也不是家庭作业:我只希望我能那么年轻。我只是想弄清楚这个问题,以便更好地理解。感谢您的回复(关于电费的回复除外)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-19 08:55:41

我认为您可以创建一个增强的接口,例如,名为IEnhancedUserControl,如下所示

代码语言:javascript
运行
复制
interface IEnhancedUserController : IUserController
{
void IncreasePower(int amount);
void DecreasePower(int amount);
}

然后你的CeilingFan和Lightbulb会实现这个增强的接口,而不是原来的接口。这样你就可以避免更改rest代码,如原始接口、CCTVCamera等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54756517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档