三、依赖倒置原则

1、定义

依赖倒置原则,高层模块不应该依赖底层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
三、依赖倒置原则_第1张图片
DIP_Diagram.png

2、实现

(1)定义车接口


public interface ICar {

    void run();
}

(2)定义司机接口


public interface IDriver {

    void drive(ICar car);
}

(3)司机实现类


public class Driver implements IDriver {

    @Override
    public void drive(ICar car) {
        car.run();
    }
}

(4)奔驰车实现类


public class Benz implements ICar {

    @Override
    public void run() {
        Log.d("JimmyZhang", "奔驰汽车开始运行...");
    }
}

(5)宝马车实现类

public class BMW implements ICar {

    @Override
    public void run() {
        Log.d("JimmyZhang", "宝马汽车开始运行...");
    }
}

(7)测试实现

public class Client {

    public static void main(String[] args) throws IOException {
        IDriver zhangsan = new Driver();
        ICar benz = new Benz();
        zhangsan.drive(benz);
    }
}

3、依赖的三种写法

(1)构造函数传递依赖对象;
(2)Setter方法传递依赖对象;
(3)接口声明依赖对象。

4、最佳实践

(1)每个类尽量都有接口或者抽象类,或者抽象类和接口两者都具备;
(2)变量的表面类型尽量是接口或者抽象类;
(3)任何类都不应该从具体类派生;
(4)尽量不要覆写基类的方法;
(5)结合里氏替换原则使用。

你可能感兴趣的:(三、依赖倒置原则)