依赖倒转原则

依赖倒转原则

Dependence Inversion Priciple

基本介绍
  • 高层模块不应该依赖低层模块,二者都应该依赖其抽象
  • 抽象不应该依赖细节,细节应该依赖抽象
  • 依赖倒转的中心思想是面向接口编程
  • 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类
  • 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成

细节

  • 低层模块尽量都要有抽象类或接口,或者两者都有,程序稳定性更好
  • 变量的声明类型尽量是抽象类或接口,这样我们的变量引用和实际对象间,就存在一个缓冲层。利于程序扩展和优化
  • 继承时遵循里氏替换原则
1通过接口传递实现依赖
interface IOpenAndClose{
    //抽象方法
    public void open(ITV tv);
}
interface ITV{
    //ITV接口
    public void play();
}

class Htc implements ITV{
    @Override
    public void play() {
        System.out.println("htc电视机,打开");
    }
}
//实现接口
class OpenAndClose implements IOpenAndClose{
    public void open(ITV tv){
        tv.play();
    }
}
2.通过构造方法依赖传递
interface IOpenAndClose{
    //抽象方法
    public void open(ITV tv);
}
interface ITV{
    //ITV接口
    public void play();
}

class Htc implements ITV{
    @Override
    public void play() {
        System.out.println("htc电视机,打开");
    }
}
//实现接口
class OpenAndClose implements IOpenAndClose{
    public ITV tv;
    public OpenAndClose(ITV tv){
        //构造器
        this.tv = tv;
    }
    public void open(){
        tv.play();
    }
}
3.通过setter方法传递
interface IOpenAndClose{
    //抽象方法
    public void open(ITV tv);
    public void name(ITV tv);
}
interface ITV{
    //ITV接口
    public void play();
}

class Htc implements ITV{
    @Override
    public void play() {
        System.out.println("htc电视机,打开");
    }
}
//实现接口
class OpenAndClose implements IOpenAndClose{
    public ITV tv;
    public setTv(ITV tv){
        //构造器
        this.tv = tv;
    }
    public void open(){
        tv.play();
    }
}
Licensed under CC BY-NC-SA 4.0
Last updated on Mar 23, 2024 06:11 UTC
让过去的过去,给时间点时间
Built with Hugo
Theme Stack designed by Jimmy