轻量级开发的成功秘诀,第 4 部分: 轻量级容器的比较
2009-11-11 00:00:00 来源:WEB开发网
清单 1. 两个 Kiss 组件public class Boy {
public void kiss(Object kisser) {
System.out.println("I was kissed by " + kisser);
}
}
public class Girl {
Boy boy;
public Girl(Boy boy) {
this.boy = boy;
}
public void kissSomeone() {
boy.kiss(this);
}
}
这两个类是自解释的。Girl 对 Boy 有依赖关系。该依赖关系将通过构造函数被注入。先实例化一个容器:
MutablePicoContainer pico = new DefaultPicoContainer();
然后注册两个组件:
pico.registerComponentImplementation(Boy.class);
pico.registerComponentImplementation(Girl.class);
稍后您可以向 PicoContainer 请求一个对象,然后操作它:
Girl girl = (Girl) pico.getComponentInstance(Girl.class);
girl.kissSomeone();
这样就差不多了。编程模型是优雅的,基于构造函数的风格意味着您无需包括无参构造函数。对本例中的 Girl 调用这种函数将会使该对象处于不一致的状态,因为 kiss 方法将抛出异常。
加法器示例 (HiveMind)
现在,让我们看一下 HiveMind 的编程示例。从 Apache Jakarta Project 下载 HiveMind,然后查看加法器示例。您会看到接口和实现。(记住:HiveMind 强制编写接口。)
清单 2. 加法器示例接口和实现public interface Adder
{
public double add(double arg0, double arg1);
}
public class AdderImpl implements Adder
{
public double add(double arg0, double arg1)
{
return arg0 + arg1;
}
}
更多精彩
赞助商链接