很多时候,在设计界面时,我都会遇到同样的情况。这种情况是使用接口的某些实现需要接口中的特定参数,而其他实现不需要。
- 设计界面时的最佳实践是什么?
- 是否可以让某些实现实现接口但不使用所有参数?
或者在这些情况下,我是否应该只接受参数列表(某种结构)并在每个实现中相应地处理该列表?
很多时候,在设计界面时,我都会遇到同样的情况。这种情况是使用接口的某些实现需要接口中的特定参数,而其他实现不需要。
或者在这些情况下,我是否应该只接受参数列表(某种结构)并在每个实现中相应地处理该列表?
不,这不好。它打破了 Liskov 的替代原则。
在我看来,您的界面正在尝试做太多事情。要么使用接口继承,要么将接口拆分为多个。请注意,拥有多个小接口比拥有一个大接口要好。类仍然可以实现所有这些。
接口和类一样,应该遵循 SRP(单一职责原则)。恕我直言,接口这样做更重要,因为它们会强制对应用程序的其余部分进行设计。
我也倾向于尽量避免从接口中添加属性。
在某些情况下没关系。只要它满足接口承诺维护的合同,您实际上对实现中的参数做什么并不重要。
但是你应该重新考虑你是否真的不想要一个更具体的接口来处理一些需要这些参数的东西。在您的抽象堆栈中,具有“较低”接口需要“较高”参数是封装的中断。