0

编程时,有很多指标表明耦合不好。一个类应该尽可能少地了解其他类。所以它是模块化的,可以很容易地更换。

现在,随着密封类的引入,抽象超类知道了它的子类。据我了解,子类通常与其密封接口位于同一个包(甚至同一个文件)中。所以应该不存在包之间循环依赖的问题。

所以我想我要问的是:密封接口及其子类是否应该被视为一个单元,而不是相互依赖的模块化部分?

子类在包外的示例:

import asdf.Car;
import asdf.Truck;

public sealed interface Service permits Car, Truck {

触发快乐的近距离投票者:密封接口的实现者不能存在于接口模块之外,因此答案非常简单。完全不是基于意见的。这是您可能感兴趣的 Brian Goetz 的评论:Sealed classes for classes in different packages

虽然我已经得到了答案,所以我真的不在乎是否没有其他人可以回答。祝你今天过得愉快!

4

1 回答 1

0

继承总是类型之间的强耦合;因此,您通常应该遵循

优先组合而不是继承

大多数使用继承的情况都可以通过组合和依赖注入来解决。


使子类靠近一个模块内的基类是一种很好的做法,不建议这样做。您不希望在不相关的包或模块之间存在强耦合。


我所说的一切都有例外。Fe 您可能希望创建一个抽象类库,而不需要复制实用程序代码。F.ex java 集合和抽象集合类。.

于 2021-08-07T09:43:18.087 回答