java - 当接口实现的方法比接口多时,依赖倒置原则会失效?
问题描述
我想知道如何在不破坏依赖倒置原则的情况下调用类中的方法?
在下面的示例中,如果我有一个名为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 创建新界面的情况下完成此操作?
解决方案
怎么样:
interface IMovable {
void move(int distance);
}
执行:
public class Bird implements IMovable {
@override
public void move(int distance) {
if(distance > 5) {
walk();
} else {
fly();
}
}
public void walk() {
//Do Something
}
public void fly() {
//Do Something
}
}
用法:
public class Start {
private IMovable animal;
@inject
public Start(IMovable animal) {
this.animal = animal;
this.animal.move(100);
}
}
推荐阅读
- excel - 更改以数组值开头的换行符的字体大小?
- python - 如何根据python中的条件旋转和创建列
- python - 如何使用 python-telegram-bot 获取用户类型
- adobe - 增量数据提取 Adobe AEM 查询构建器
- java - 如何在导航抽屉中添加活动
- assembly - MASM x86 , ret 返回错误的地址
- next.js - 在 Next.js Hot Reload 发生之前是否有一个钩子?
- python - 使用 python (matplotlib) 复制 Stata 的 psgraph 的输出
- c# - 根据时间戳组织文件列表
- python - 如何使用 Python Selenium 在下拉菜单中激活复选框