オブジェクト間のリンケージ - オブザーバーパターン(V)

22.5 ObserverパターンのJavaイベント処理

       JDK 1.0イベントモデルの以前のバージョンでは、Chain of Responsibilityパターンをベースにしていますが、このモデルは、複雑なシステムには適していませんので、さ1.1 JDKのバージョン以降では、モデルのイベント処理が使用するオブザーバーパターンに基づいて、デリゲートのイベントモデルを(DelegationEventモデル、DEM)で、Javaのコンポーネントイベントは、イベントが自分の治療のために責任があると原因となったオブジェクトによってトリガが、別のイベントハンドラオブジェクトに委譲されていないが責任があります

      ではDEMのモデル、イベントを発行する責任、およびオブザーバーの役割(イベントハンドラ)(などのインターフェイスコンポーネントなど)のターゲットの役割は、その標的への関心のイベントを購読することができます。特定のターゲットがイベントを生成すると、それはすべての加入者に通知します。イベントによって掲示されるイベントソース(イベントソース)、および加入者と呼ばれるイベントリスナー(イベントリスナー)も通過過程では、イベントオブジェクト(イベントオブジェクト)イベントでは、イベントに関連する情報を提供しますイベントリスナーオブジェクトは、イベントハンドラオブジェクトと呼ばれることができるので、リスナーの実装クラスは、イベント処理を実装します。イベント・ソース・オブジェクトは、イベントリスナーオブジェクト(イベント処理オブジェクト)をオブジェクトとイベントは、構成のJavaイベント処理モデルの3つの要素。イベントソースオブジェクトがターゲットとして、しかし、オブザーバーとして機能するイベントリスナーオブジェクトを観察する行為します。一例として、事件へ]ボタンをクリックして、次のようにそのイベント処理は次のとおりです。

       (1)ユーザがいる場合、GUIは、(例えば、イベントトリガするボタンクリックのActionEventアクションイベントのタイプ)、JVMは、対応生成するのActionEventイベントオブジェクトのタイプをイベントオブジェクトにイベントとイベントソースに関する情報が含まれてい情報、今回のボタンは、イベントソースオブジェクトです。

       (2)のActionEventイベントリスナーオブジェクト(イベント処理対象)にイベントオブジェクトは、JDKを処理するために排他的に提供されるのActionEventのインターフェースイベントActionListenerを、開発者が必要なのActionListener(例えば、実装クラスをMyActionHandler)、実施のActionListenerインタフェース抽象イベントハンドラメソッドの宣言のactionPerformed()イベントの発生に、適切な処置を行います。

       (3)開発者のActionListenerインタフェースの実装クラス(例えばMyActionHandler)オブジェクトは、ボタン、ボタンによってクラスに登録されているaddActionListener()登録方法を達成します。

       (4)JVMは、トリガ・イベントの時点でボタン呼ぶfireXXX()ボタンイベントハンドラオブジェクトに登録メソッド呼び出し内部メソッドのactionPerformed()事件の処理を達成する方法。

       同様のアプローチを使用して、我々は、カスタマイズすることができるGUIのような2つのテキストボックスと2つのボタンを含むログ成分として、成分をLoginBean、図を用いてもよい22-6設計を示します。

22-6カスタム・ログイン・モジュール構造[図は、ボタン、テキストボックス、および他のインターフェース・コンポーネントを省略]

       図22-6関連カテゴリ次のように:

       (1)LoginEventのパッケージ化イベントに関連する情報ために使用されるイベントクラスは、オブザーバーパターンの一部ではないが、それは、対象物と観察対象との間でデータを転送することができるAWTのすべてのため、イベントモデルをイベントクラスが定義されていjava.util.EventObjectのサブクラスを。

       (2)LoginEventListenerの抽象ビューア、イベント応答メソッドが宣言として作用ValidateLogin()は、イベントを処理するため、このメソッドは、イベント処理方法、呼び出されValidateLogin()メソッドLoginEventの送信のために、パラメータとしてイベントオブジェクトのタイプイベントデータに関連付けられ、この方法は、サブクラスで特定のイベント処理の達成が実現されます。

       (3)LoginBeanは、私たちは抽象クラスのゴール、簡略化の一定量のためのオブザーバーモードを定義していない特定のターゲットクラス、として機能します。LoginBean抽象オブザーバで定義されたLoginEventListenerのオブジェクトのタイプLELオブジェクトとイベントLoginEvent、登録方法を提供addLoginEventListener()は、オブザーバーを追加するために使用されるのJava、イベントハンドラ一の観察モードに共通に使用されるもの多くのないオブザーバーモードターゲットのみオブザーバオブジェクトを定義し、ある、のではなく、オブジェクトのコレクションを観察する観察者に提供します。LoginBeanも通知メソッド定義fireLoginEvent()は、メソッドJavaは、イベント・オブジェクト・インスタンスの中に内部モデルを取り扱う「焼成法」イベントと呼ばれるLoginEvent、オブジェクトを渡すために、ユーザによって、視聴者情報入力そして、ビューアオブジェクトに応じて、メソッド呼び出しValidateLogin()

      (4)LoginValidatorALoginValidatorB実装特定の視聴者クラスとしてLoginEventListenerインターフェースに抽象メソッド宣言をValidateLogin()特定の実現のために、イベント処理、を含む方法LoginEvent用に、パラメータの種類をLoginValidatorALoginValidatorBできるクラス同じイベントの異なる実装を提供します。

公開された25元の記事 ウォンの賞賛1 ビュー762

おすすめ

転載: blog.csdn.net/qq_42770949/article/details/104960140