Dagger2简单总结

Dagger2总结

Dagger是什么?

Dagger是一个依赖注入框架,由Square公司共享出来的,第二代则是谷歌接手,现在由Google接手维护

依赖

依赖是指某个模块A要实现某个功能需要其他模块B。最原始也最简单的的方式是在模块内new一个B的对象出来,这样会造成B的构造函数修改,需要修改A中的代码,两者耦合度非常高。

依赖注入

依赖注入是不在A中去创建 B的实例,而是让上层调用者注入一个B的对象,这样可以让模块A不再因为B的构造方法的修改而改变
举列如下:

public class ClassA{
        private ClassB b
        public ClassA(ClassB b){
        this.b = b    }
    }

以上不符合开闭原则,这时就该使用Dagger2。

public class ClassA{
     @inject 
      private ClassB b 
      public ClassA(){
       }
    }

运用注解将ClassB注入到ClassA中,可以不影响ClassA的使用。

Dagger2的基本使用

需要用到的依赖:

//Dagger2依赖
    implementation 'com.google.dagger:dagger:2.23.2'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.23.2'

一、创建注解提供类

//创建需要注入的类
public class ProviderClass {
    //给构造添加@Inject注解,表明对外提供依赖
    @Inject
    public ProviderClass(){//提供无参构造

    }
    //自己定义的方法
    public String getdata(String aa){
        return "我是"+aa;
    }

}

二、搭建桥梁

//创建注解桥梁表示向谁注入
@Component
public interface MyInterface {
    void inject(MainActivity mainActivity);
}

三、在注入的类中,成员变量上加上@Inject表示注入的类,直接调用方法即可

public class MainActivity extends AppCompatActivity {
    @Inject
    public ProviderClass providerClass;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //这个是在搭建好桥梁后
        //build/generated/ap_generated_sources/debug/out在这个路径下找到DaggerMyInterface
        //这一行是在调用类中加载Dagger,然后就可以调用方法了
        DaggerMyInterface.builder().build().inject(this);
        //调用的方法
        String getdata = providerClass.getdata("XXX");
        //打印实现的效果
        Log.i("###","打印:---"+""+getdata);
        
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值