イベントタイプに基づいてさまざまなタイプ/量のデータを渡すことができるカスタムイベントをサポートするクラスを実装する必要があります。例えば、
イベントタイプAIでは、2つの文字列名を渡す必要があります。イベントタイプBIでは、3つの文字列名とdoubleを渡す必要があります。
私が見つけた2つのデザイン:
可能なすべてのデータのフィールドとメソッドを含むEventObjectの拡張(一部のイベントタイプに不要なフィールドは空白のままになります)。
// event constructors public MyEvent(Object source, int type, String a, String b) {} public MyEvent(Object source, int type, String a, String b, String c, double d) {}
EventInfoオブジェクトのパラメーターを含むEventObjectの拡張。EventInfoは、変更情報の基本クラスです。特定のイベントを発生させるメソッドは、必要な変更情報を含むEventInfoのサブクラスを渡します(リスナーはダウンキャストする必要があります)。
// event constructors public MyEvent(Object source, int type, EventInfo info) {} // base class for event info public class EventInfo {}
これを実装するために他にどのような設計がありますか?それぞれの長所と短所は何ですか?
ありがとう。