案例:从不同的数据库取数据
1、从Sql Server中取数据
2、从Mysql中取数据
3、从Oracle中取数据
1、public class GetDataFromSqlServer{
public List getData(){
...
}
}
2、public class GetDataFromMysql{
public List getData(){
...
}
}
3、public class GetDataFromOracle{
public List getData(){
...
}
}
业务逻辑类Bussiness
public class Bussiness{private GetDataFromMysql db = new GetDataFromMysql();
public void getData()
{
List list = db.getData();
}
}
从Bussiness类可以看出来,Bussiness依赖于GetDataFromMysql ,如果业务类改变了。用户现在从Oracle数据库中获取数据,这个程序就要做出修改。修改Bussiness类
这个时候IOC就能够解决这个问题
public interface DBBase{
public void getData();
}
编写从不同数据库获取数据的类并实现DBBase接口
public class GetDataFromMysql implements DBBase{
public void getData(){
}
}
省略剩余两个
public class Bussiness{
privtate DBBase db;
public void setDataBase(DBBase db)
{
this.db = db;
}
public void getData()
{
this.db.getData();
}
}
编写测试类
public class TestBussiness{
private Bussiness bussiness = new Bussiness();
public void getData()
{
bussiness.setDataBase(new GetDataFromMysql());
bussiness.getData();
}
}
很明显从测试类来看Bussiness被成功的重用了。