1

私は最近、Netbeans プラットフォーム開発のチュートリアル ビデオ (現在はトレイルとして知られています) を見てきました ( http://www.netbeans.org/kb/trails/platform.html )

Lookupそして、Netbeansからの使用がどれほど安定しているか疑問に思っていました

これは、ルックアップの仕組みについて私が理解したことです

画像として:

ここに画像の説明を入力

擬似コード (クラス構造) として:

{

((class A implements MyInterface)) , ((class B implements MyInterface))


[MyInterface (API)]

[CoreApplication] ([Lookup provide access to A and B via MyInterface ])

}

私の質問は、上記の実装は、高度に結合されたものと比較して信頼できる結果を生み出すかということです (静的変数、メソッド、および内部クラスが他のクラスからアクセスされるシナリオも考えてください) ?

[疎結合を使用し、ルックアップ API を使用して実装する場合、それを知る必要があります。私のプログラムは、密結合のものと比較して多かれ少なかれ信頼性が高くなりますか? (信頼できるとは、アプリケーションの安定性、頻繁にクラッシュするかなどの要因を意味します)]

もしそうなら、それはどのように機能しますか?

4

2 に答える 2

2

それが信頼できるかどうかは、(また)あなた次第だと思います。

考えてみてください。クラス B がルックアップに登録されています。クラス A には、クラス B が提供できるサービスが必要です。クラス A が必要とするのはserviceだけです。実装が実際にクラス B、クラス C、クラス D などからのものであるかどうかは問題ではありません。そのため、ルックアップを使用することで、サービスが利用可能かどうかを尋ね、利用できる場合はそれを使用するだけです。そして、ここで信頼性が向上します。探しているサービスがルックアップ内で見つからないとしましょう。その場合、サービスが見つからない場合にシステムが壊れないようにするのはあなた次第です。

NetBeans のシナリオは次のようになります。

RequiredService s = Lookup.getDefault().lookup(RequiredService.class);
if (s != null)
{
    s.doSomething(); // In this case the responsibility of reliability lies on the side of who implemented this service.
}
else
{
    // Now it's up to you to keep it reliable and perhaps let the user know that something went not as expected.
}

RequiredService の実装に「しっかりと」依存していると想像してみてください。突然、なんらかの理由でそれがなくなりました。モジュールは実行時に NetBeans 内でロードされるため、これらの ClassLoader 例外が発生し、そのような場合に何をすべきかを決定する機会さえありません。

于 2013-08-16T01:50:35.180 に答える