【发布时间】:2018-04-28 01:30:05
【问题描述】:
我想知道如何在不破坏依赖倒置原则的情况下调用类中的方法?
在下面的示例中,如果我有一个名为 Animal 的接口,例如:
interface Animal {
void walk();
}
而且,它的实现如下:
public class Bird implements Animal{
public void walk() {
//Do Something
}
public void fly() {
//Do Something
}
}
我想执行fly()方法,我的代码目前看起来是这样的,它打破了依赖倒置原则。
public class Start {
private Bird bird;
@inject
public Start(Bird bird) {
this.bird = bird;
this.bird.fly(); // THIS BREAKS DEPENDENCY INVERSION
}
}
如果不在界面中添加fly() 或为Birds 创建新界面,我如何才能做到这一点?
【问题讨论】:
-
调用
fly方法不会破坏依赖倒置。它通过存储变量private Bird被破坏。 Bird 是一个具体的类;根据 DIP,具体类不能是成员变量或字段。
标签: java solid-principles