这段代码是什么意思?

时间:2010-03-24 00:13:29

标签: java netbeans openide

我不知道,下面的代码中代码lookups.singleton的功能是什么

public class ProjectNode extends AbstractNode {

public ProjectNode(MainProject obj, ProjectsChildren children) {
    super (children, Lookups.singleton(obj));
    setDisplayName ( obj.getName());
}
}

2 个答案:

答案 0 :(得分:3)

您可以阅读NetBeans Platform's Lookup apis以了解设计模式的概述。您也可以read about the class named Lookups了解其方法的详细信息。

基本上,此API会创建一个仅包含单个对象的查找对象。当您在此对象上调用查找时,只返回用于初始化对象的对象,如果它实现/扩展查询中使用的对象。

Lookup模式是NetBeans平台中非常重要的一部分。

答案 1 :(得分:2)

Lookups通常被称为服务定位器,现在通常被视为反模式,但是很常见于5 - 8年前。 singleton()方法是类上的公共静态方法,用于实质上查找对基本全局对象的引用。想象一下它看起来像:

public class Lookups {
  public static SomeObject singleton(InputObject obj) {
    // use the parameter to return some other object
  }
}

它被视为反模式的原因是它可能使单元测试或模拟代码部分变得非常困难。在Java DI(“依赖注入”)中,像Spring这样的框架往往比这种方法更受青睐。