抽象应用高级模块包装



wiki说

在依赖性反演的直接应用中,摘要是 由上/政策层拥有。该架构将 更高/策略组件和定义较低的抽象 在同一软件包中一起服务。较低的层是 通过这些抽象类的继承/实现创建 接口。

理想情况下,正如Wiki文章还说(在实施部分下的方法2中)抽象模块应为单独的模块,以进行松动耦合,

,但我对方法1有疑问,并引用了陈述。在未实施/可能的2个可能的情况下,我总是看到抽象类别用低级模块包装而不是高级模块。

包装抽象/接口具有高级软件包的缺点是,如果有10个高级模块调用给定的低级模块,那么我们需要在所有10个模块中包装接口。考虑一下我必须在接口中添加一种方法,我必须修改所有10个模块才能添加该方法。不是吗?因此,根据我的理解,应使用低级模块而不是高级模块包装。

如果我在这里错了,请纠正我?

我会不同意您的观点,"我总是看到抽象类是用低级模块打包的,而不是高级模块"。如果您看到的是相同的,那么班级设计绝对是错误的。

让我们将抽象与真实世界的例子进行比较。假设您有一个电动开关/插座,认为是一个抽象/接口或高级模块。插座不知道它连接到哪种设备。在这种情况下,设备是低级模块。实际上,套接字(高级模块)不想知道它连接到哪些低级模块(设备)。 compatibleable 的任何设备都可以连接到它。兼容性是一种实现抽象(套接字)的一种。只有那些旨在连接该插座的设备只能连接到套接字。说为印度设计的设备无法连接到英国插座。现在,如果高级模块知道低级模块,则等效于为每个设备设计插座,因为在这种情况下,设备不是基于抽象的。

现在要回答您在所有类中实现接口的问题,如果有更改,有时我们无法避免它,但是尽管Designig抽象不会使它变得胖(接口隔离原理)。从逻辑上讲,您将界面进行分组,而不会将所有内容放在接口中。在设计界面时,关于分组的界面很多次。我确实同意,我们仍然将最终添加更多行为到接口,最终将在课堂上推动它。但是,如果我们在逻辑组中设计Interace,那么该实现将是所有类都需要的。

最新更新