Observable/Observer クラス/インターフェースを使用する Java で作成された基本的な MVC パターンがあります。
Observable Observer Observable/Observer
Model Controller View
View triggers an event to the Controller, when the user interacts with the GUI.
- E.g presses a button, fills in a field, etc.
Model triggers an event to the View when it updates its state.
- E.g when the a button was pressed and the Controller requests new results.
私の質問は Observer 関数についてです
update(Observable obs, Object arg);
これは 1 つの機能ですが、私View
の例ではさまざまな種類の更新を行う必要があります。検索結果の更新と追加情報の表示をどのように区別すればよいでしょうか? これらは、モデルとは異なるオブジェクトを使用する 2 つの完全に異なる更新です。
私の最初のアイデアは、オブジェクトを使用して、必要な更新を説明する文字列を渡すことでした。
"UpdateResults" "DisplayAdditionalInformation" "AddQuestions"
しかし、それはエラーが発生しやすく、醜いようです。私の 2 番目の本能は、オブジェクトとして渡される EventObject を作成することでしたが、使用している EventObject の種類を尋ね続ける必要があります。
if (arg instanceof ResultEventObject)
// Get results from model
else if (arg instanceof InformationEventObject)
// Get information from model
else if (arg instanceof QuestionsEventObject)
// get questions from model
3 つ目のアイデアは、単純にすべてを更新することですが、それは無意味に非効率的です。
おそらく、Observable/Observer インターフェースを正しく理解していないか、update() の作成者が意図したとおりに使用していません。update
したがって、私の質問は、処理するさまざまな種類の更新またはイベントがある場合に、関数を適切に使用するにはどうすればよいですか?