美文网首页
Dragger2解析(一)

Dragger2解析(一)

作者: Ming威 | 来源:发表于2017-11-30 13:35 被阅读0次

依赖注入(DI-Dependency Injection)

什么是依赖注入

  • 这是一种设计思想,一个面向对象的编程法则。
  • DI能够让开发者写出低耦合代码,更加优良的程序。
  • 更容易测试,代码健壮性更强。
  • 它能使程序的整体结构变的非常灵活。

依赖注入的好处

举个例子

人和车的关系,人有开车的技能,但是他想要开车就必须先找一辆车过来。

public class Car {

    public Car() {
    }

    public void run() {
        LogUtils.i("启动汽车");
    }
}
public class People {

    private Car mCar;

    public People() {

        mCar = new Car();
    }

    public void driveCar() {
        mCar.run();
    }
}

通过这两段代码我们可以看出来,People类依赖于Car类,我们需要如何创建一个Car出来,还需要控制何时创建。这是我们传统的写法。如果我们用了DI框架,我们只需要告诉它我们的People类需要依赖一个Car类,具体如何创建Car,何时创建Car,我们并需要知道,通过这样的操作方式我们降低了代码的耦合度,同时也告诉我们为什么叫“依赖注入”,People依赖Car,而Car又需要DI框架将自己注入到People中。

生活中的例子

在饭店未诞生之前也就是人们吃饭需要自己做饭自己找食材

后来社会出现了饭店的概念人们想吃饭只需要去饭店然后点自己想吃的饭就可以了

在后来我们有了外卖的这个概念我们不需要知道饭店在哪里,我们需要吃饭的时候只需要掏出手机点一下就可以了。

分析下三种情况

1.你需要饭怎么做 食材需要自己找(被调用者必须出现在调用者代码里面,而且你还需要知道如何构造调用者)

2.你不需要知道饭是怎么做出来的 你只需要找到饭店即可。(你不需要知道调用者如何构造,但是你自己需要找到工厂。调用者与工厂类耦合在一起)

3.你不需要饭怎么做 也不用知道饭店在哪里 当你饿的时候打开外卖APP就可以了。

(系统调用)

依赖注入的方式

  1. 接口注入
  2. 构造方法注入
  3. Setter 注入

以上三种方式都很简单,但要在合适的时候调用合适的方式很难掌握,需要结合项目本身多加思考,才能灵活应用。

后面的文章将会介绍 Android 中的依赖注入框架 Dragger2

相关文章

  • Dragger2解析(一)

    依赖注入(DI-Dependency Injection) 什么是依赖注入 这是一种设计思想,一个面向对象的编程法...

  • Dragger2的使用

    Dragger2的使用 依赖 依赖冲突处理: 初级用法 多个Module MultComponent依赖的多个Mo...

  • [Android 学习笔记] Dragger2 依赖注入由浅入深

    1. 在 gradle 中添加依赖 在主项目的 build.gradle 中添加 Dragger2 库的依赖 2....

  • 夯实基础:Java的反射

    前言 为什么要写Java的反射?因为本人在阅读很多注入依赖这种开源库(类似Dragger2,Butterknife...

  • dragger2新了解

    @Inject 构造器注入,@Inject标注在构造器上其实有两层意思。 ①告诉Dagger2可以使用这个构造器构...

  • Dagger2神器入门(一)

    前言 网上随便搜索一下Dragger2,一大堆文章铺天盖地而来,一上来就讲@Inject,@Module等注解是做...

  • Dragger2 依赖注入理解

    1 ,dragger 作用 利用注解,直接将对象注入到目标类,省去手动new的操作,降低耦合2,@inject ...

  • XML解析

    Sax解析:流的方式进行解析流解析:以流的方式进行解析(一行一行解析)Dom解析:加载整个文档,以树的方式解析

  • Linux智能DNS服务搭建之Bind服务(二)

    一、DNS正向解析与反向解析 1.DNS正向解析与反向解析简介 2.DNS正向解析与反向解析配置 1)配置正向解析...

  • xml解析

    一、解析方式:DOM解析,SAX解析 1)解析工具 基于DOM解析原理的: 1)JAXP (o...

网友评论

      本文标题:Dragger2解析(一)

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