Что такое поиск Netbean? - PullRequest
       3

Что такое поиск Netbean?

7 голосов
/ 11 июля 2010

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

Но я не понимаю:

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

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

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

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

Это правильный процесс определения выбора?

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

  6. Готово?

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

Ответы [ 2 ]

4 голосов
/ 11 февраля 2015

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

В основном у вас есть 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(); возвращает, какие экземпляры были выбраны.

3 голосов
/ 11 июля 2010
...