dependency-injection(依赖注入)
2015-12-30 21:53
281 查看
概念
Inversion of Control: 控制翻转;是一个重要的面向对象编程原则,控制反转就是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。
Dependency Injection:依赖注入, 依赖注入模式是指客户类Client不用自己来初始化(new)它所依赖的成员变量IServer,而是等待某个对象创建IServer的适当的(实现类)的对象并将它赋值给Client的成员变量。
sample
classA { AInterface a; A(){} AMethod()//一个方法 { a = new AInterfaceImpl(); } }
这里面
Class A与
AInterfaceImpl就是依赖关系,如果想使用AInterface的另外一个实现就需要更改代码了,依赖注入就是为了解决这种耦合关系的
使用new(对象创建)是一种硬编码,是代码耦合度变得很高,不方便测试.依赖注入简单的讲就是通过外界传入依赖来进行成员变量的初始化
依赖注入的三种实现方式
Contructor Injection(构造函数注入)public interface IFather { //method }
public class Human { IFather father; public Human(IFather father) { this.father = father; } }
基于setter,通过JavaBean的属性(setter方法)为可服务对象指定服务
public class Human { IFather father; public void setIFather(IFather father) { this.father = father; } }
接口注入
// 注入功能的interface public interface InjectFinder { void injectFinder(IFather father); }
// 让我们的Human实现接口 public class Human implements InjectFinder { IFather father; public void injectFinder(IFather father) { this.father = father; } }
参考:
dependency-injection
dependency-injection-theory
依赖注入(Dependency Injection)模式
相关文章推荐
- eclipse jad 反编译 插件安装
- DocFX
- Duplicate复制数据库并创建物理StandBy(spfile+不同实例名+不同路径)
- bzoj3141: [Hnoi2013]旅行
- 图灵奖获得者传记
- cf337div2 C
- 搭建邮件服务器
- BZOJ 3674 可持久化并查集加强版 可持久化线段树
- 近几年前端技术盘点以及 2016 年技术发展方向
- 100. Same Tree
- Linux别名与常用快捷键
- [OC] UITabBarController
- C++11实现一个自动注册的工厂
- RXAndroid Single的使用
- Hackerearth.com编程问题解题思路系列:Roy's Chocolates
- 安卓apk下载安装
- SystemUI下拉通知栏的源码分析
- CDOJ 1269 ZhangYu Speech 数组处理
- stdlib.h
- javaWeb之Servlet的工作原理与生命周期