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

C# 实现接口中尚未实现的方法的新组件,c#,design-patterns,interface,C#,Design Patterns,Interface,我有两个类文件(WallSwitch和ProximitySwitch)-让我们假设它们是第三方提供的组件-它们实现了On()和Off()方法,它们来自我在核心消费系统中构建的IUserController接口 我还有三个类-也是第三方提供的-即,天花板风扇,灯泡和CCTV摄像机,它们从作为核心系统一部分的ICeilingComponent接口实现方法。这些实现类被实例化并注入继承类中,例如: ICeilingComponent component = new LightBulb(); IUse

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

我还有三个类-也是第三方提供的-即,
天花板风扇
灯泡
CCTV摄像机
,它们从作为核心系统一部分的
ICeilingComponent
接口实现方法。这些实现类被实例化并注入继承类中,例如:

ICeilingComponent component = new LightBulb();

IUserController controller = new WallSwitch(component);
然后

controller.On();

controller.Off();
大家都很高兴

我现在有了一个新的第三方提供的组件,名为
dimerswitch
,它还实现了
On()
Off()
IUserController
方法,但是
dimerswitch
类还实现了
IncreasePower(int-amount)
decreatepower(int-amount)方法
,它只影响
天花板风扇和(可调光的)
灯泡,而不影响
CCTV摄像机

我希望在核心系统中考虑到这一点,但我无法理解如何在不强制其他第三方组件改变其结构的情况下做到这一点,正如我与他们签约实现的接口所描述的那样。这是最重要的一点。我必须有办法在核心系统内处理这一问题,而不影响其他地方的变化

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

我曾希望把这一切写下来能给我一个解决办法。但是没有。也许我现在看不见树林了。我一直在寻找我认为合适的术语。这肯定是一个普遍的问题。别客气,让我装傻


另外,这显然不是一个现实世界的问题——我当然不想鼓励讨论电压。但这也不是家庭作业:我只希望自己那么年轻。我只是想了解一下这个问题,以便于理解。欢迎您的任何回复(关于电荷的回复除外)。

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

interface IEnhancedUserController : IUserController
{
void IncreasePower(int amount);
void DecreasePower(int amount);
}

然后,您的天花板风扇和灯泡实现此增强接口,而不是原始接口。这样可以避免更改其他代码,如原始界面、CCTV摄像头等。

controller.On()的功能是什么?我的意思是,我知道它应该打开天花板组件,但是它调用了
ICeilingComponent
接口的什么方法来实现这一点呢?嗨,John Wu,在这种情况下,它只是一个深奥的控制台程序来帮我弄清楚这个问题。没有有趣的实现细节。例如,它只是从子类中调用“public void On(){Console.WriteLine(“Fan rotates”);}”方法。它向控制台返回一个字符串。这就是票证。我确信接口继承不起作用,因为我正在将组件注入控制器的构造函数,这将破坏CCTV摄像头(基本ICeilingComponent)和新DimmerSwitch(需要IEnhancedCeilingComponent的IEnhancedUserController)之间的兼容性。但是,DimmerSwitch中的重载构造函数负责向后兼容性。我有点担心重载构造函数在这种情况下会破坏接口隔离原则,但这可能是另一个问题。谢谢你的回复。