在设计界面时,我经常遇到同样的情况。这种情况是,某些使用接口的实现需要接口中的特定参数,而其他实现则不需要。
- 设计接口时最佳实践是什么?
- 有些实现只实现接口却没有使用所有参数,这样做是否可以?
或者在这些情况下,我应该只是接收一组参数(某些结构),并在每个实现中相应地处理该列表吗?
在设计界面时,我经常遇到同样的情况。这种情况是,某些使用接口的实现需要接口中的特定参数,而其他实现则不需要。
或者在这些情况下,我应该只是接收一组参数(某些结构),并在每个实现中相应地处理该列表吗?
不行,这违反了Liskov替换原则。
听起来你的接口试图做太多事情。要么使用接口继承,要么将接口拆分为多个。请注意,拥有许多小接口比拥有一个大接口要好。类仍然可以实现所有这些接口。
接口像类一样应该遵循SRP(单一责任原则)。在我看来,接口比类更加重要,因为它们强制设计整个应用程序。
我也倾向于尽可能避免从接口添加属性。
在某些情况下,这是可以的。只要它满足接口承诺维护的契约,实现中实际上对参数做了什么并不重要。
但是,您应该重新考虑是否实际上需要一些需要这些参数的更具体的接口。在您的抽象堆栈中,需要“更高级”的参数的“较低级别”接口是封装的破坏。