0

いくつかの独立したモジュールを表示するページを持つ MVP で設計された Java アプリケーションがあるとします。特に、アプリには 2 つの独立した MVP モジュールがあり、これを考慮します。アプリには、前述のモジュールが通信する必要がある機能があります。モジュールは、機能専用のインターフェース (API) A および B を提供します。この機能のロジックを処理する Manager (M) もあります。マネージャーは、ページをトラバース (または何らかのコンテキストを使用) して、考慮されている機能に参加する必要があるモジュールへの参照を取得できます。

Manager のコードの以下のスニペットは、私が考えているアプローチを示しています。

  1. EventBus を介した非同期イベントの使用

    eventBus.addHandler(Event.CHECK_A_IS_OK, new CheckAIsOkHandler(Event e){
        eventBus.fireEvent(Event.DO_SOMETHING_ON_B, e.getValue();
    });
    eventBus.fireEvent(Event.CHECK_A_IS_OK);
    
  2. 直接参照の使用

    A a;
    B b;
    
    void findModules(){
        a = context.findA();
        b = context.findB();
    }
    
    ...
    
    if (a.check()){
        b.doSomething(B.getValue());
    }
    

質問は次のとおりです。

オブジェクト間の通常の通信 (条件の確認、値の戻りなど) に EventBus を使用しても問題ありませんか? それとも、実際のイベントにのみイベント パターンを使用する方がよいでしょうか (何かが起こったことをサブスクライバーに通知することを意味します)。2 番目のアプローチに従うことは疎結合に反しますか? 他のパターンの方が適しているのではないでしょうか?

直感的には、2 番目のアプローチの方がクリーンです。

4

1 に答える 1