依赖注入

依赖注入是面向对象编程很重要的思想,是实现解耦很重要的一种手段。

依赖注入是指a依赖于b,a不直接在内部实例化b,而是通过注入的方式,也就是构建和使用分离。与之相关的思想是,面向接口编程,而不要面向实现编程。

依赖注入一般需要面向对象语言,或者可以用一定方式实现面向对象的语言(比如lua可以利用元表实现类和继承,js或者ts也有类和对象的概念)。为啥需要面向对象语言呢?因为依赖注入需要面向接口编程,这需要语言支持派生和多态。

依赖注入的形式主要有3种:1.构造函数注入(Constructor Injection)。2.接口注入。例如setMethod方法(Setter Injection)。3.设值方法(Setter Injection)。其实2和3是属于同一种方法。

应用:在23种设计模式当中,装饰者模式也有运用类似依赖注入的思想(但每个装饰者之间其实应该没有依赖关系?),每个装饰者在装饰自己之前,先装饰通过构造函数注入的前一个装饰者需要装饰的东西。类似的,策略模式也算是运用了依赖注入的思想。最近在看puremvc,感觉它里面的很多实现也都是依赖注入的思想。

其他:与依赖注入思想比较类似的是服务器定位器模式,它的思想是a依赖于b,a不直接在内部实例化b,而是通过服务器定位器获得b的实例。这实际上还是依赖注入的思想,只不过换了一种实现方式。

转载于:https://blog.51cto.com/zhangzhao/2396778

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值