【发布时间】:2018-10-05 20:25:06
【问题描述】:
目前我正在处理Racing-Car-Katas。目标是重构大量代码,使其遵循可靠的原则。
我尝试添加Dependency Inversion Principle。我可以通过构造函数传递依赖项。
初始情况
在类Alarm 中是依赖Sensor,它生成一个psiPressureValue。
public class Alarm {
Sensor sensor = new Sensor();
public void check()
{
double psiPressureValue = sensor.popNextPressurePsiValue();
/* ... */
}
}
想法
public class Alarm {
Sensor sensor;
public Alarm() {
this.sensor = new Sensor();
}
public Alarm(ISensor sensor) {
this.sensor = sensor;
}
public void check()
{
double psiPressureValue = sensor.popNextPressurePsiValue();
/* ... */
}
}
如果这是一个真正的应用程序,我不想破坏Alarm 和Sensor 之间的任何依赖关系。在那里我会创建以下构造函数
public Alarm() {
this.sensor = new Sensor();
}
但我的直觉告诉我这是代码异味..
如何在现实世界的应用程序中处理这种依赖关系?
【问题讨论】:
-
"I don't want to break any dependency between Alarm and Sensor"。你的意思是?在现实世界的应用程序中,如果Sensor是一个具体的类,您将不希望这两者之间存在强耦合。接口和构造注入是要走的路。我不明白你的担心? -
@plalx 我从链接中读到 OP 正在进行学习练习。
标签: oop design-patterns dependency-injection dependencies refactoring