首先咱们来看一下定义:java
1.高层模块不该该依赖低层模块,二者都应该依赖其抽象函数
2.抽象不该该依赖细节code
3.细节应该依赖抽象对象
下面来看一下uml图blog
public interface IDriver { //是司机就应该会驾驶汽车 public void drive(ICar car); } public class Driver implements IDriver{ //司机的主要职责就是驾驶汽车 public void drive(ICar car){ car.run(); } } public interface ICar { //是汽车就应该能跑 public void run(); } public class Benz implements ICar{ //汽车确定会跑 public void run(){ System.out.println("奔驰汽车开始运行..."); } } public class BMW implements ICar{ //宝马车固然也能够开动了 public void run(){ System.out.println("宝马汽车开始运行..."); } } public class Client { public static void main(String\[\] args) { IDriver zhangSan = new Driver(); ICar benz = new Benz(); //张三开奔驰车 zhangSan.drive(benz); } }
总结:接口
1.每一个类尽可能都有接口或抽象类,或者抽象类和接口二者都具有class
2.变量的表面类型尽可能是接口或者是抽象类变量
3.任何类都不该该从具体类派生构造函数
4.尽可能不要覆写基类的方法方法
5.结合里氏替换原则使用
ps:
1.构造函数传递依赖对象
2.Setter方法传递依赖对象
3.接口声明依赖对象
欢迎关注个人公众号