java的依赖注入

本来我接受各种参数来构造一个对象,现在只接受一个参数——已经实例化的对象
可以参考知乎的回答:https://www.zhihu.com/question/32108444

大白话来讲,就是当类A需要用到类B的实例对象b的时,不需要在类A自己主动new一个对象b,而是通过参数传递的方式,也就叫做依赖注入的方式获得。

举例

1.没有使用依赖注入

类TaxCalculate:计算应该上缴多少税
类TaxReport:显示上缴多少税
类Main:程序入口

public class TaxCalculate {
  private double income;
  public TaxCalculate(int income) {
    this.income = income;
  }
  public double calculateTax (){
    return income * 0.3;
  }
}

public class TaxReport {
  private TaxCalculate calculator;
  public TaxReport (double income) {
    calculator = new TaxCalculate( income );
  }
  public show(){
  double tax = calculator.calculateTax();
  System.out.println("税是" + tax);
  }
}

public Main{
  public static void main( String args[ ]) {
     TaxReport tax = new TaxReport(1000);
      tax.show();
  }
}

2.使用依赖注入

四个类
主类Main
类TaxReport
类TaxCalculate
接口类ITaxCalculator

public interface ITaxCalculator {
    double taxCalculate();
}

package Hello;

public class TaxCalculate implements ITaxCalculator{
    private double income;

    public TaxCalculate(double income) {
        this.income = income;
    }

    @Override
    public double taxCalculate() {
        return income * 0.3;
    }
}


public class TaxReport {
    public void show(ITaxCalculator taxCalculator){
        var tax = taxCalculator.taxCalculate();
//依赖注入设置
        System.out.println("应该上缴的费用是" + tax);
    }
}


public class Main {
    public static void main(String args[]){
        var taxReport = new TaxReport();
        taxReport.show(new TaxCalculate(1000));
//依赖注入
    }
}

相比较原来的方式,方式二使用了接口,降低了类与类之间的耦合性,利用依赖注入的方式,结构清晰。方式二中是依赖于抽象的类而不是具体的类,面向接口而不是面向具体的实现,这才是依赖注入的精髓所在。

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

相关阅读更多精彩内容

友情链接更多精彩内容