Что такое поиск в netbean?

Мне трудно это понять. По сути, этот Lookup API используется для сохранения слабосвязанной межмодульной природы. Таким образом, поставщик услуг и потребительские модули могут взаимодействовать друг с другом с помощью API поиска, верно?

Но вот чего я не понимаю:

Lookup похож на сумку, полную каких объектов для этого класса? Может кто-нибудь привести более простую аналогию?

Итак, зависимости созданы, и вы правильно реализуете LookupListener в потребителе службы? Очевидно, что потребитель зависит от поставщика.

Тогда что прослушивает реализация LookupListener? Это собственный поиск? Итак, если есть карта класса другого модуля, она будет храниться как объект внутри Lookup реализации LookupListener?

Итак, поиск похож на сумку, в которой могут храниться классы другого модуля и его методы?

Является ли это правильным процессом определения выбора?

  1. в TopComponent (представление) вы реализуете прослушиватель поиска и прослушиватель действий.
  2. вы делаете новый объект (из другого модуля)
  3. associateLookup(Lookups.singleton(fff)); опять путаница с этой строчкой: что конкретно делает associateLookup() ?
  4. result = Utilities.actionsGlobalContext().lookupResult(Browser1.class); что делает эта строка? что такое результат? содержит ли он класс Browser1 (из другого модуля)?
  5. result.addLookupListener (this); Зачем вам добавлять слушателя к результату? и что мы слушаем и почему на TopComponent?

  6. Сделанный ?

И, наконец, чтобы еще больше запутать меня, как Node API входит в игру?


person KJW    schedule 11.07.2010    source источник
comment
Много информации и видеоуроков по платформе NetBeans можно найти здесь: netbeans.org/kb/ маршруты/платформа.html   -  person Jesper    schedule 11.07.2010


Ответы (2)



Поиски можно рассматривать как базовый инструмент, поддерживающий принцип слабой связи и высокой связности.

В основном у вас есть API в модуле beverage-api:

public interface Beverage {
   ...
}

Затем другой модуль beers, который зависит от beverage-api:

@ServiceProvider(service = Beverage.class)
public class SomeBeer implements Beverage {
   ...
}

в другом модуле, который также зависит от beverage-api, вы можете написать волшебную формулу:

Collection list = Lookup.getDefault().lookupAll(Beverage.class);

который даст вам список всех поставщиков напитков без объявления точной зависимости от конкретного класса или зависимости от этого модуля. Это здорово, ваш код не зависит от конкретной реализации, достаточно иметь эти модули в пути к классам, и они «автоматически» загрузятся в ваше приложение.

associateLookup(Lookups.singleton(fff)); снова, путаница с этой строкой: что именно делает AssociateLookup()?

Да, это сбивает с толку. По сути, вы вручную добавляете какой-либо объект в систему поиска.

result = Utilities.actionsGlobalContext().lookupResult(Beverage.class);

Utilities.actionsGlobalContext() относится к текущему выбранному (активному) TopCompoment. Он вернет экземпляр Beverage.class, если он существует в активном компоненте. Если вам нужны все экземпляры данного класса, вы должны использовать lookupAll().

result.addLookupListener(this); Почему вы добавили слушателя к результату?

Чтобы получать уведомления об изменениях. Когда пользователь выбирает некоторые объекты Beverages, он запускает метод LookupListener:

void resultChanged(LookupEvent ev);

и result.allInstances(); вернет, какие экземпляры были выбраны.

person Tombart    schedule 10.02.2015