美文网首页
Dagger2 分析

Dagger2 分析

作者: hello_math | 来源:发表于2016-11-24 11:47 被阅读25次

    1.概念

    控制反转(IoC :Inversion of Control):主要用来削减计算机程序的耦合问题,包含依赖注入和依赖查找两种类型。
    show code:

    public class Wukong { private Jingubang jingubang; public Wukong(){ // 依赖 this.jingubang = Jingubang(); } }

    2.使用

    2.1悟空:

    import javax.inject.Inject; public class Wukong { @Inject JinGuBang jinGuBang; @Inject public Wukong() { } public String useJinGuBang() { return this.jinGuBang.use(); } }

    2.2金箍棒:

    import javax.inject.Inject; public class JinGuBang { @Inject public JinGuBang() { } public String use() { return "user Jing gu bang"; } }

    2.3@Module:

    import dagger.Module; import dagger.Provides; @Module public class XiYouModule { @Provides // @Singleton Wukong provideWukong() { return new Wukong(); } @Provides // @Singleton JinGuBang provideJinGuBang() { return new JinGuBang(); } }

    @Singleton:这个被依赖的对象在应用的生命周期里只有一个实例。

    2.4@Component接口,连接@Module和@Inject

    import android.app.Activity; import javax.inject.Singleton; import dagger.Component; @Component(modules = {XiYouModule.class}) @Singleton public interface XiYouComponent { void inject(Wukong wk); void inject(Activity a); }

    2.5使用

    public class MainActivity extends AppCompatActivity { private static final String TAG = "##MainActivity"; @Inject Wukong wukong; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView welcomeTextView = (TextView) findViewById(R.id.welcome_textview); XiYouComponent xiYouComponent = DaggerXiYouComponent .builder() .xiYouModule(new XiYouModule()) .build(); xiYouComponent.inject(this); welcomeTextView.setText(wukong.useJinGuBang()); } }

    3优点:

    封装比较好,不用xx.yy.zz长链引用了。

    相关文章

      网友评论

          本文标题:Dagger2 分析

          本文链接:https://www.haomeiwen.com/subject/wgjbpttx.html