设计模式-依赖倒置

首先咱们来看一下定义: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.接口声明依赖对象

欢迎关注个人公众号

相关文章
相关标签/搜索