依赖倒置原则(Dependence Inversion Principle)
public class DependenceInversionOne {
public static void main(String[] args) {
Person zhangsan =new Person();
zhangsan.toWork(new Bike());
}
}
class Bike {
public String go() {
return "骑自行车";
}
}
class Person {
public void toWork(Bike bike) {
System.out.println(bike.go() + "去公司上班");
}
}
思考个问题:假设现在张三赚钱了,买了汽车,开车去上班,该怎么做?
新建一个Car类,修改Person的toWork()方法?我们是否有办法避免修改Person类?
public class DependenceInversionTwo {
public static void main(String[] args) {
Person1 zhangsan = new Person1();
zhangsan.toWork(new Bike1());
zhangsan.toWork(new Car());
}
}
interface Vechile {
String go();
}
class Bike1 implements Vechile {
@Override
public String go() {
return "骑自行车";
}
}
class Car implements Vechile {
@Override
public String go() {
return "开小汽车";
}
}
class Person1 {
public void toWork(Vechile vechile) {
System.out.println(vechile.go() + "去公司上班");
}
}
依赖关系传递的三种方式
依赖倒转原则的注意事项
本文地址:https://blog.csdn.net/sunpeiv/article/details/107424085
如对本文有疑问, 点击进行留言回复!!
SpringBoot引用阿里easyexcel,Excel导出返回浏览器下载
HashMap、Hashtable、ConcurrentHashMap三者间的异同
解决RecycleView 中Item包含Edittext时,滑动view复用导致数据错乱的问题
多线程、同步工作原理、死锁案例、Lock接口、线程的生命周期的讲解及实现
网友评论