在设计界面时,我经常遇到同样的情况。这种情况是使用接口的某些实现需要接口中的特定参数而其他实现不需要。
或者在这些情况下,我应该只是接受参数列表(某些结构)并在每个实现中相应地处理该列表?
答案 0 :(得分:9)
不,不行。它打破了Liskovs Substituion Principle。
听起来我的界面正在尝试做太多。使用接口继承或将接口拆分为多个接口。请注意,拥有许多小型接口比使用大型接口更好。类仍然可以实现所有这些。
接口,如类,应遵循SRP(单一责任原则)。因为它们强制设计应用程序的其余部分,因此接口这样做非常重要。
我也倾向于尽量避免从接口添加属性。
答案 1 :(得分:0)
在某些情况下没问题。只要它满足接口承诺支持的合同,实际上对实现中的参数做什么并不重要。
但是你应该重新考虑一下你是否真的想要一些更具体的界面来处理那些需要这些参数的东西。在您的抽象堆栈中,具有“较低”接口需要“更高”参数是封装的中断。