Netbeanのルックアップとは何ですか?
-
13-09-2020 - |
質問
私はこれを理解するのに苦労しています。基本的に、このLookup APIは疎結合相互モジュールの性質を維持するために使用されます。だから、基本的にサービスプロバイダーとコンシューマーモジュールは、それぞれが正しいルックアップAPIを使用して互いに通信することができますか?
しかし、私が理解していないのは:
Lookupは、そのクラスのどのオブジェクトでいっぱいのバッグのようなものですか?誰かがより簡単な類推を与えることができますか?
だから、依存関係が作成され、あなたは正しいサービス消費者にLookupListenerを実装していますか?明らかに、消費者はプロバイダーに依存しています。
それでは、lookuplistenerリッスンの実装は何ですか?それは独自のルックアップですか?したがって、別のモジュールのクラスのマップがある場合、それはlookuplistener実装のLookup内のオブジェクトとして格納されますか?
Lookupは、別のモジュールのクラスとそのメソッドを格納できるバッグのようなものですか?
これは選択を決定する正しいプロセスですか?
- TopComponent(ビュー)では、ルックアップリスナーとアクションリスナーを実装します。
- 新しいオブジェクトを作成します(他のモジュールから)
associateLookup(Lookups.singleton(fff));
繰り返しますが、この行との混乱:とは何ですか?associateLookup()
正確にやっていますか?result = Utilities.actionsGlobalContext().lookupResult(Browser1.class);
この行は何をしていますか?結果とは何ですか?(他のモジュールからの)Browser1クラスが含まれていますか?result.addLookupListener (this)
;Resultにリスナーを追加するのはなぜですか?そして、私たちは何を聞いているのか、なぜトップコンポーネントにいるのですか?終わった?
そして最後に、私の混乱をさらに深めるために、Node APIはどのようにpla7yに入ってくるのでしょうか?
解決
があります。 NetBeansプラットフォームLookup APIの良い議論.
他のヒント
ルックアップは、以下をサポートする基本的なツールと考えることができます 緩いカップリングの高い結合の主義.
基本的にあなたは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);
Resultにリスナーを追加するのはなぜですか?
変更に関する通知を取得します。ユーザーがいくつかを選択したとき Beverages
トリガーするオブジェクト LookupListener
メソッド:
void resultChanged(LookupEvent ev);
と result.allInstances();
どのインスタンスが選択されたかを返します。