在讲解依赖注入的种实现方式之前这里先澄清一下依赖注入的意义让组件依赖于抽象当组件要与其他实际对象发生依赖关系时通过抽象来注入依赖的实际对象
依赖注入的种实现方式分别是接口注入(interfaceinjection)Set注入(setterinjection)和构造注入(constructorinjection)接下来笔者还将主要通过举例的方式把依赖注入的种实现方式介绍给读者
接口注入(interfaceinjection)
接口注入指的就是在接口中定义要注入的信息并通过接口完成注入结合前面的示例其具体步骤如下
()编写一个接口IBusiness各种数据库的注入将通过这个接口进行IBusinessjava的示例代码如下
//*******IBusinessjava**************
}
()任何想要使用数据库实例的类都必须实现这个接口业务逻辑类Business实现这个接口IBusinessBusinessjava的示例代码如下
//*******Businessjava**************
thisdb=db;
}
……
//根据注入的数据库类从×××数据库中获取数据
publicvoidgetData(){
……
dbgetData();
……
}
}
()编写测试类TestBusinessTestBusinessjava的示例代码如下
//*******TestBusinessjava**************
publicclassTestBusiness{
privateBusinessbusiness=newBusiness();
……
//根据注入的数据库类从Oracle数据库中获取数据
publicvoidgetData(){
……
businesscreateDI(newOracleDataBase());
businessgetData();
……
}
}
如果要完成依赖关系注入的对象必须实现IBusiness接口
Set注入(setterinjection)
Set注入指的就是在接受注入的类中定义一个Set方法并在参数中定义需要注入的元素为了让类Business接受DataBase的注入需要为它定义一个Set方法来接受DataBase的注入Businessjava的示例代码如下
//*******Businessjava**************
publicclassBusiness{
privateDataBasedb;
publicvoidsetDataBase(DataBasedb){
thisdb=db;
}
……
//根据注入的数据库类从×××数据库中获取数据
publicvoidgetData(){
……
dbgetData();
……
}
}
更详细的代码可以参看节的第二个例子采用的就是Set注入的方式
构造注入(constructorinjection)
构造注入指的就是在接受注入的类中定义一个构造方法并在参数中定义需要注入的元素为了让类Business接受DataBase的注入需要为它定义一个构造方法来接受DataBase的注入Businessjava的示例代码如下
//*******Businessjava**************
publicclassBusiness{
privateDataBasedb;
publicBusiness(DataBasedb){
thisdb=db;
}
……
//根据注入的数据库类从×××数据库中获取数据
publicvoidgetData(){
……
dbgetData();
……
}
}