私は Java についてこの疑問を持っています。人々がイベント リスナーを作成するとき、インターフェイスを実装し、特定のタスクを達成するためにインターフェイスに特定の関数を定義します。私の疑問は、インターフェースを実装する代わりに、適切な名前で関数を定義するだけでよいかということです。
また、インターフェイスはイベント リスナーの実現にどのように役立ちますか?
私は Java についてこの疑問を持っています。人々がイベント リスナーを作成するとき、インターフェイスを実装し、特定のタスクを達成するためにインターフェイスに特定の関数を定義します。私の疑問は、インターフェースを実装する代わりに、適切な名前で関数を定義するだけでよいかということです。
また、インターフェイスはイベント リスナーの実現にどのように役立ちますか?
Listener インターフェースを使用すると、実装の自由度が大幅に高まります。
この方法では、特定のクラスに特定の関数を実装する必要はありません。インターフェイスの実装は同じように見えますが、そうではありません。リスナーの機能はまだ単一の関数ですが、関数は通常軽量オブジェクトにあります。それでも、必要に応じて、多くのプログラム メカニズムをリスナー内に実装できます。
また、実行時にリスナーを変更できます。オーバーライドされた関数は変更できません。
ここで合成 (継承を介して)を使用する正当な理由がたくさんあります。
これを本当に理解したい場合は、「Heads first: Design Patterns」を参照することをお勧めします。Amazon の「内部を見る」機能には、このパターンを大きく説明する完全な第 1 章が含まれています。
多くの異なるクラスが同じイベントをリッスンする必要があり、Java では多重継承が許可されていないためです。