【发布时间】:2016-12-08 19:43:10
【问题描述】:
我正在尝试通过将大型类(2000 多行)重构为更小的、有凝聚力的类(约 200 行),将单一职责原则集成到我的 Java 代码中。但是我对如何正确减少类之间的耦合感到困惑,因为 某些类似乎必然会通过 new 关键字创建多个“硬依赖”。
我主要通过构造函数使用依赖注入,然后是 setter 方法,或者接受依赖作为参数并在方法主体内的其他逻辑中使用它的方法(不仅仅是简单的this.val = val; setter。
IntelliJ 的自动重构实例化这个新提取的类,并通过 this 引用将其传递(注入)到 LoadController。如果我必须重构一个 2000 行的类,当然每次我提取一个新类时都会发生这种自动实例化 + 注入。下面的 LoadController 是程序主阶段的 JavaFX 控制器类,它作为各种功能的起点:
public class LoadController{
private final DBConnection dbConnection = new DBConnection(this);
private final UpdateLabels updateLabels = new UpdateLabels(this);
private final OpenCloseMenu openCloseMenu= new OpenCloseMenu (this);
private final CreateVBox createVBox= new CreateVBox (this, dbConnection);
private final ...
private final ...
}
这是错的吗?我的理解是,大的、独立的函数应该在它们自己的类中......但是有些类必须像上面那样具有多个硬依赖关系,以便“引导”使用各种其他类之间的逻辑流。
【问题讨论】:
标签: java dependency-injection constructor parameter-passing single-responsibility-principle