三、依赖倒置原则

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)结合里氏替换原则使用。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,819评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,300评论 25 708
  • 很爱她 有时很俏皮
    放晴_7e31阅读 249评论 1 0
  • 你和我是在网上认识的,你是一位兵哥哥,而我只是个高中在校生,百无聊赖的生活,让我们在手机屏幕上相伴了快两年了,...
    修文儿阅读 777评论 0 0
  • 丝丝缕缕 春是轻触肌肤的涟漪 阳光吞吐着百花的香 倾覆了灵魂的所有角落 温煦是谁家的不速之客 肆意流走在四肢百骸 ...
    烟雨心清阅读 391评论 2 13

友情链接更多精彩内容