1

让我们想象一下,我们有一个大型数据结构(我们称之为Configuration)和各种客户端类(我们称之为它们Services)。每个服务只需要一个或两个字段Configuration

如果我们将整个Configuration对象注入到各个Services中,这是否违反了ISP?Configuration技术上是数据结构而不是字面 Java 接口这一事实是否改变了 ISP 背后的基本点?

我面临的实际困境是如何配置对我的系统的各个部分可用。我可以选择使用 Spring 的@Value注解,通过它每个组件都能准确地获得它需要的东西,仅此而已。我的第二个选择是使一个Configuration实例作为一个整体可用。在第二种情况下,系统的每个组件都将获得整个系统的配置,而不是只获得它实际需要的几个部分。

我试图了解第二种选择是否违反 ISP。

4

1 回答 1

1

严格按照Bob Martin的说法,是的。他将 ISP 应用于 a 的例子stack似乎暗示了数据结构被包括在内。

另一方面,这个问题经常被问到依赖倒置原则,例如hereherehere。正如我关于 DIP 的回答,我认为将其应用于数据结构是没有意义的。将面向对象的原则应用于过程式编程结构时,您的努力可能会有所不同。

于 2021-09-19T17:05:54.080 回答