Dagger2使用理解

以前造一辆汽车,我们需要发动机,车座等,所有的东西都需要车厂自己联系零配件公司(也就是new 出我们需要的部件对象),如下:

public class Car {
    private Engine engine;
    private Seat seat;
    private Wheel wheel;
    public Car() {
        engine = new Engine();
        seat = new Seat();
        wheel = new Wheel();
    }
  }

但是当零配件公司的电话换了或者地址换了,也就是Engine类的构造函数变了,这样造车就出现了问题。这样车厂就没有版本全身心去造车。为了让车厂可以安心造车。dragger2 中间商公司出现了,他会全力为车厂提供零件服务。车厂只要一个电话就可以让中间商提供所有想要的零件了。如下:

public class Car {

  @Inject
  Engine engine;
  @Inject
  Seat seat;
  @Inject
  Wheel wheel;

  public Car() {
    DaggerCarComponent
        .builder()
        .carModule(new CarModule())
        .build()
        .inject(this);
  }
}

现在让我们打入中间商公司,看看他们是怎样工作的

@Component(modules = CarModule.class)
public interface CarComponent {
     void inject(Car car);
  }

这个代码包含了3条信息,其中@Component 代表的他是合法有认证的中间商,inject代表的是他可以服务的企业,括号中的类代表的是他可以联系到的零部件公司。

现在让我们看下零部件公司他们是怎么工作的?

@Module
public class CarModule {
    @Provides
    public Engine provideEngine(){
        return new Engine();
    }

    @Provides
    public Seat provideSeat(){
        return new Seat();
    }

    @Provides
    public Wheel provideWheel(){
        return new Wheel();
    }
}

这个类展示了2个信息,其中@Module代表的是该企业是合法正规的零部件公司,@Provides代表的是该公司可以提供的哪些零部件。

总结:

最后总要来点总结,我们看到dagger2其实是有3部分组成

1)零部件公司 @Moudle + @Provides

2)中间商 @Component(moudles = 'xx')

3)需求方 @Inject

你可能感兴趣的:(android)