Что означает этот код? - PullRequest
       22

Что означает этот код?

1 голос
/ 24 марта 2010

Я не знаю, какова функция кода lookups.singleton в коде ниже

public class ProjectNode extends AbstractNode {

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

Ответы [ 2 ]

3 голосов
/ 24 марта 2010

Вы можете прочитать о поиске apis для платформы NetBeans, чтобы получить обзор шаблона проектирования. Вы также можете прочитать о классе с именем Lookups , чтобы узнать подробнее о его методах.

По сути, этот API создает объект поиска, который содержит только один объект. Когда вы вызываете lookup для этого объекта, он вернет только объект, который использовался для инициализации объекта, если он реализует / расширяет объект, который используется в запросе.

Шаблон поиска является очень важной частью платформы NetBeans.

2 голосов
/ 24 марта 2010

Lookups - это то, что обычно называется Service Locator , и в наши дни его обычно рассматривают как anti-pattern , но это было довольно распространенным явлением 5-8 лет назад. Метод singleton() является публичным статическим методом в классе, который используется для поиска ссылки на глобальный объект. Представьте, что это выглядит так:

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

Причина, по которой он рассматривается как анти-шаблон, заключается в том, что он может крайне затруднить юнит-тестирование или макетирование разделов вашего кода. В Java DI («внедрение зависимостей»), такие как Spring, обычно предпочитают этот подход.

...