依赖关系(Dependency Injection)指的是类与类之间的互相调用和依赖的关系。比如说A类中调用了B类的代码,则表示A类依赖B类(或者B类依赖A类,我忘记了)。
我并不是说依赖关系不好,如果类与类之间没有了依赖关系,啊哈,那什么都做不了,但是依赖关系过强,则产生了:难于测试、修改麻烦的问题。
目前解决类与类之间的依赖关系的方法,最为通用的就是采用配置文件的方法。比如说Spring这些框架就对DI的注入采用了配置文件。
而其实最简单的方法,我们自己也可以实现,代码如下:
//演示了如何使用properties文件来配置类的依赖关系
//fileName=HelloWorld.java
import java.util.*;
import java.io.*;
public class HelloWorld
{
public static void main(String[] args)
{
try {
InputStream in=new FileInputStream("class.properties");
Properties prop=new Properties();
prop.load(in);
Test one=(Test)Class.forName(prop.getProperty("TestImpl")).newInstance();
String text=one.sayHello();
System.out.println(text);
}
catch (Exception e) { System.out.println(e); }
}
}
interface Test
{
public String sayHello();
}
class TestImpl implements Test
{
public String sayHello(){return "Hello edison";}
}
class TestImpl2 implements Test
{
public String sayHello(){return "Hello edison 2st";}
}
//配置文件如下:
// fileName=class.properties
TestImpl=TestImpl2
如上面的代码,在配置文件中决定到底采用那个Test的实现类,利用了接口来解耦,仔细看看还是很有收获的。当然了,目前配置文件都采用XML格式的,但是基本思想还是一致的。