2011-07-16 7 views
2

netbeansプラットフォームモジュラーアプリでメディエーターデザインパターン(http://en.wikipedia.org/wiki/Mediator_pattern)を使用したいと思います。しかし、私はメディエーターを作成し、それを各モジュールに注入する良い方法ではないようであるため、起動時にこれをどうやって行うのかはわかりません。メディエータパターンを使用したNetbeansプラットフォームプロジェクト - これは可能ですか?

これを行うには良い方法がありますか? Lookup APIなどを使用する必要がありますか?

答えて

3

それは、NetBeansプラットフォームになるとインターモジュラー通信ほとんどの答えは、ルックアップに煮詰める:)あなたは、私は、次の

@ServiceProvider(service = Mediator.class) 
class Mediator{..} 

んだろう与えたサンプルコードを使用して

ServiceProviderアノテーションは、META-INF/servicesフォルダに値を入れる作業を自動化するServiceLoader mechanismのNetBeans拡張です。

class BtnView extends JButton implements Command { 

    Mediator med = Lookup.getDefault().lookup(Mediator.class); 

    BtnView(ActionListener al, Mediator m) { 
     super("View"); 
     addActionListener(al); 
     med = m; 
     med.registerView(this); 
    } 

    public void execute() { 
     med.view(); 
    } 

} 

を次のように

ButtonViewクラスは修正されるだろう、私はMediatorパターンと本当に慣れていないので、私は私の理解は、あなたが例を理解できる限り多くので召集渡し願っています。より多くの例については

@ServiceProvider注釈が推奨された理由を私は確認されませんでしたが、私が読んだときに、これらのサイト

+1

を見ます下の2番目のリンクをクリックすると、それは単なる広告の方法だデフォルトではクラスはグローバルルックアップになります。私はこれを試してみて、後で私の質問を更新し、これがうまくいかにうまくいったかについていくつかの情報を書きます – Makoto

+0

このアプローチについて私が持っている1つの質問は、別のモジュールがそれを変更したときにメディエータのデータを動的に変更するかどうかということです。 Lookup.getDefaultは、それを呼び出すすべてのモジュールに対して同じ参照を返し、各モジュールへの複製を返しませんか? – Makoto

+1

@Makoto各モジュールは同じインスタンスを取得するので、あるモジュールの変更は別のモジュールで表示されます。 –

関連する問題