Что означает этот код?
Я не знаю, какова функция кода lookups.singleton в коде ниже
public class ProjectNode extends AbstractNode {
public ProjectNode(MainProject obj, ProjectsChildren children) {
super (children, Lookups.singleton(obj));
setDisplayName ( obj.getName());
}
}
2 ответа
Вы можете прочитать об интерфейсе Lookup для платформы NetBeans, чтобы получить обзор шаблона проектирования. Вы также можете прочитать о классе с именем Lookups, чтобы узнать подробнее о его методах.
По сути, этот API создает объект поиска, который содержит только один объект. Когда вы вызываете lookup для этого объекта, будет возвращаться только тот объект, который использовался для инициализации объекта, если он реализует / расширяет объект, который используется в запросе.
Шаблон Lookup является очень важной частью платформы NetBeans.
Lookups
это то, что обычно называют локатором сервисов, и в наши дни его обычно рассматривают как анти-паттерн, но он был довольно распространенным 5-8 лет назад. singleton()
Метод - это открытый статический метод класса, который используется для поиска ссылки на глобальный объект. Представьте, что это выглядит так:
public class Lookups {
public static SomeObject singleton(InputObject obj) {
// use the parameter to return some other object
}
}
Причина, по которой он рассматривается как анти-шаблон, заключается в том, что он может чрезвычайно затруднить модульное тестирование или макетирование разделов вашего кода. В Java DI ("внедрение зависимостей"), такие как Spring, как правило, предпочтительнее этого подхода.