前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >依赖传递的三种方式

依赖传递的三种方式

作者头像
BUG弄潮儿
发布2020-11-11 11:34:13
1.4K0
发布2020-11-11 11:34:13
举报
文章被收录于专栏:JAVA乐园

依赖是可以传递的,A对象依赖B对象,B对象又依赖C对象,C对象又依赖D对象......生生不息,依赖不止,要记住一点:只要做到抽象依赖,即使多层的依赖传递也无所畏惧。对象的依赖关系主要有三种方式来传递。

1、构造函数传递依赖对象

在类中通过构造函数依赖对象,安装依赖注入的说法,这种方式叫做构造函数注入。

代码语言:javascript
复制
public interface ICar {

    //是汽车就应该能跑
    public void run();

}
代码语言:javascript
复制
public interface IDriver {

    //是司机就应该会驾驶汽车
    public void drive();

}
代码语言:javascript
复制
public class Driver implements IDriver{

    private ICar car;

    //构造函数注入
    public Driver(ICar car) {
        this.car = car;
    }

    //司机的主要职责就是驾驶汽车
    @Override
    public void drive() {
        car.run();
    }

}

2、Setter方法传递依赖注入

在抽象中设置Setter方法声明依赖关系,依照依赖注入的说法,这个Setter依赖注入。

代码语言:javascript
复制
public interface ICar {

    //是汽车就应该能跑
    public void run();

}
代码语言:javascript
复制
public interface IDriver {

    //车辆的型号
    public void setCar(ICar car);

    //是司机就应该会驾驶汽车
    public void drive();

}
代码语言:javascript
复制
public class Driver implements IDriver{

    private ICar car;

    @Override
    public void setCar(ICar car) {
        this.car = car;

    }

    //司机的主要职责就是驾驶汽车
    @Override
    public void drive() {
        car.run();
    }

}

3、接口声明依赖对象

在接口的方法中声明依赖对象,该方法也叫做接口注入。

代码语言:javascript
复制
public interface ICar {

    //是汽车就应该能跑
    public void run();

}
代码语言:javascript
复制
public interface IDriver {

    //是司机就应该会驾驶汽车
    public void drive(ICar car);

}
代码语言:javascript
复制
public class Driver implements IDriver{

    //司机的主要职责就是驾驶汽车
    @Override
    public void drive(ICar car) {
        car.run();
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档