1

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

public class ProjectNode extends AbstractNode {

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

2 回答 2

3

您可以阅读有关NetBeans 平台的 Lookup api 的信息,以大致了解设计模式。您还可以阅读名为 Lookups 的类,了解有关其方法的详细信息。

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

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

于 2010-03-24T01:59:17.820 回答
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 这样的框架往往比这种方法更受青睐。

于 2010-03-24T00:19:44.313 回答