public class A
{
B comp;
public A(B comp)
{
this.comp = comp;
}
public String helloWorld()
{
return "Hello "+comp.world();
}
}
没有任何多余的代码,A只需要B的功能,所以除了一个对B的接口引用,再没有其他了。这样无论获得这个组件的途径是通过POJO,jini还是web services,组件本身的代码都不需要改变。
其次,如果采用factory method虽然能提供全局唯一的对象获取点,但是:每个对象工厂只能针对一个类体系(hierarchy),对于组件体系众多的大型应用,工厂将很快泛滥。。而IoC 容器则可以提供真正的唯一对象获取点,不过也付出了损失类型安全性的代价。