Javaのアダプタクラスとは何ですか? アダプタクラスとそのタイプの利点
公開: 2021-05-19目次
アダプタクラスとは何ですか?
JAVAでは、アダプタクラスにより、リスナーインターフェイスのデフォルトの実装が可能になります。 リスナーインターフェイスの概念は、委任イベントモデルに由来します。 これは、JAVAなどのグラフィカルユーザーインターフェイス(GUI)プログラミング言語でイベントを処理するために使用される多くの手法の1つです。
GUIプログラミングは主にイベント駆動型であり、ユーザーは関連するビジュアルとグラフィックスを介してシステムと対話します。 これは、画面上のマウスポインタの座標を変更したり、ボタンをクリックしたり、ページをスクロールしたりするマウスの動きなど、ユーザーによって開始されたすべてのアクティビティが独立したイベントと見なされることを意味します。
これらの独立したイベントアクティビティはそれぞれ、アプリケーションがユーザーに提供する必要のある応答を繰り返すコードセグメントに本質的にリンクされています。 経路は単純です。 ユーザー(ソース)はイベントを生成し、それを1つ以上のリスナーインターフェイスに送信します。 事象電位が受信されると、リスナーインターフェイスはイベントを処理し、適切な応答を返します。
この経路は、イベント処理のプロセスを実証します。 したがって、JAVAのアダプタクラスは、ダミーメソッドのセットを持つインターフェイスを実装するために使用されます。 プログラマーがアダプタークラスを継承することを選択した場合、特定のリスナーインターフェイスの下にリストされているすべてのメソッドを実装するように強制されることはありません。 プログラマーが必要なメソッドのみをオーバーライドできるように、アダプタークラスをさらにサブクラス化することができます。 つまり、アダプタクラスを使用することで、プログラマはフィールドイベントへの独自のリスナーインターフェイスを迅速に構築できます。 これはコードの保存に役立ちます。
アダプタクラスとリスナーインターフェイスの関係は何ですか?
リスナーは、プログラマーがインターフェースの下にリストされているほとんどのメソッドを利用することを意図している場合に使用されます。 リスナーインターフェイスがクラスによって直接実装されている場合、そのインターフェイス内のすべてのメソッドを実装する必要があり、コードが不当に大きくなります。 この複雑さは、アダプタクラスを呼び出すことで解決できます。 アダプタークラスは、イベントが特定のメソッドのみを呼び出す場合に不可欠であることがわかります。
プログラマーは、そのサブクラスを作成し、インタレストメソッドをオーバーライドしてアダプタークラスを使用するだけです。 したがって、アダプタクラスは、複数のメソッドを持つJAVAのリスナーインターフェイスに役立ちます。 これをよりよく理解するために、MouseListenerインターフェースの例を考えてみましょう。 このインターフェイスは、マウスの状態が変化するたびに通知されます。 マウスクリック、mouseExited、mouseEntered、mousePressed、mouseReleasedの5つのメソッドがあります。
イベントに対して通知される場合、これらのメソッドの1つだけが必要な場合でも、それらすべてを実装する必要があります。 不要なメソッドは空のままです。 アダプタークラスは、空のメソッド本体のこの不要な実装を回避するために使用されます。
アダプタのデザインパターンを理解する
非技術的な用語では、アダプタは、定義上、2つの互換性のないインターフェイスが連携できるように構造的に設計されています。 したがって、アダプタパターンは、既存のコードを変更することなく、互換性のない2つのインターフェイスを互換性のあるものにすることができます。 対応するインターフェースは一貫していない可能性がありますが、それらの内部機能は求められている要件と一致する必要があります。 これをより明確にするために、関連する例を考えてみましょう。
国によって電気ソケット、電圧、周波数の測定値が異なることを認識しています。 ある国の仕様に従って設計されたアプライアンスを別の国で使用する必要がある場合は、アプライアンスに互換性があることを確認する必要があります。
たとえば、英国ではタイプGソケットが一般的に使用され、米国と日本ではタイプAとタイプBのソケットが使用され、インドではタイプC、タイプD、タイプMが使用されます。したがって、たとえば米国と日本の電気仕様とは互換性がありません。 これは、互換性のないコードを互換性のあるコードに変換するためにアダプターの目的が不可欠になる場所です。
アダプタクラスの種類
アダプタクラスはJavaで見つけることができます。 awt.the event、java.awt.dndおよびjava.swing.eventパッケージ。 これらのパッケージごとに、JAVAの対応するリスナーインターフェイスを備えた標準のアダプタクラスを以下に示します。
1.java。 awt。 イブ
アダプタークラス | リスナーインターフェイス |
WindowAdapter | WindowListener |
KeyAdapter | KeyListener |
MouseAdapter | MouseListener |
MouseMotionAdapter | MouseMotionListener |
FocusAdapter | FocusListener |
ComponentAdapter | ComponentListener |
ContainerAdapter | ContainerListener |
HierarchyBoundsAdapter | HierarchyBoundsListener |
2. java.awt.dnd
アダプタークラス | リスナーインターフェイス |
DragSourceAdapter | DragSourceListener |
DragTargetAdapter | DragTargetListener |
3. javax.swing.event
アダプタークラス | リスナーインターフェイス |
MouseInputAdapter | MouseInputListener |
InternalFrameAdapter | InternalFrameListener |
これらは、それぞれのJavaパッケージのAbstractWindowToolkitに含まれています。 リスナーインターフェイスに含まれるメソッドの性質を理解するために、いくつかの例を考えてみましょう。
- WindowListenerインターフェースは、ウィンドウの開閉、ウィンドウのアクティブ化と非アクティブ化、ウィンドウのアイコン化と無害化など、ウィンドウイベントに関連するメソッドを定義します。
- KeyListenerインターフェースは、ユーザーがキーボードコンポーネントを操作することによって発生するキーイベントを処理するメソッドを定義します。
- MouseListenerインターフェースは、マウスが安定し、ユーザーのビジュアルフレーム上のコンポーネントの終了、入力、クリック、プレス、または解放に関連する事象電位を受信したときに通知されます。
- コンポーネントリスナーインターフェイスは、コンポーネントイベントの可能性を受け取ります。 ここで、コンポーネントとは、ボタン、チェックボックス、スクロールバーなど、ユーザーと対話するように設計されたグラフィカルオブジェクトを指します。
クラスアダプタとオブジェクトアダプタの違い
機能性と柔軟性を保証するために、JAVAなどのオブジェクト指向プログラミングは、継承や構成などの機能をプログラマーに提供します。 別のクラスからその機能を継承して特定のコードを再利用しようとすると、作成するサブクラスは、プログラムの長さ全体にわたって親クラスに依存したままになります。
これにより、多くの場合、システムはますます複雑になり、テストが困難になり、実行時の機能の交換が非常に困難になります。 構成では、1つのクラスが別のクラスのみを使用します。 インターフェイスを明確に定義することにより、2つの間のデカップリングがさらに促進されます。
したがって、クラスアダプタとオブジェクトアダプタの間の議論は、次のように解決できます。 クラスアダプタは継承を使用するため、クラスをラップすることしかできません。 定義上、何らかの基本クラスから派生する必要があるため、インターフェイスをラップすることはできません。 オブジェクトアダプタはコンポジションを使用するため、クラスとインターフェイスの両方をラップできます。 これは主に、構成において、各クラスまたはインターフェイスがプライベートのカプセル化されたメンバーであるために実現されます。
アダプタクラスの利点
- アダプタクラスは、無関係のクラスが連携するのを支援します。
- アダプタクラスを使用すると、同じクラスを複数の方法で使用できます。
- ユーザーには、アプリケーションを開発するためのプラグ可能なキットのオプションが提供されます。 したがって、クラスの使用法は非常に再利用可能になります。
- クラスの透明性を高めます。
- これは、関連するパターンをクラスに含める方法を提供します。
世界のトップ大学からオンラインでソフトウェアエンジニアリングコースを学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。
結論
この記事では、JAVAのアダプター・クラスの仕組み、アダプター・クラスを含む3つの主要なパッケージ、およびプログラマーにとってのアダプター・クラスの利点について理解しました。 アダプタクラスは、さまざまなイベントを受信するための抽象クラスであり、リスナーオブジェクトを作成するための便利なものとして存在します。 さまざまな機能を備えたアダプタークラスは、Swing方法論を介して革新的なプラットフォームをプログラマーに提供します。
Javaスキルを向上させたい場合は、これらのJavaプロジェクトを手に入れる必要があります。 Java、フルスタック開発について詳しく知りたい場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニングを9時間以上提供しています。プロジェクト、および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、およびトップ企業との雇用支援。
Javaのアダプタクラスとは何ですか?
アダプタクラスは、アダプタパターンを使用して定義されるクラスです。 アダプタを使用すると、元のクラスを変更せずに、既存のクラスに新しい機能を追加できます。 たとえば、java.util.Scannerクラスはjava.utilパッケージからのものです。 ファイルはInputStreamではないため、Scannerクラスはファイルから読み取ることができません。 ファイルから読み取るために、InputStreamを引数として受け入れ、処理されたデータをオブジェクトとして返すアダプタークラスを作成します。 アダプタパターンは、コードを変更せずに既存のクラスの機能を拡張するために使用されます。
Javaのデザインパターンとは何ですか?
デザインパターンは、ソフトウェア設計の特定のコンテキスト内で一般的に発生する問題に対する一般的な再利用可能なソリューションです。 直接コードに変換できる完成したデザインではありません。 これは、さまざまな状況で使用できる問題を解決する方法の説明またはテンプレートです。 オブジェクト指向プログラミングでは、デザインパターンは、ソフトウェアシステムの設計と実装を容易にする確立された規則です。 Javaにはいくつかのデザインパターンがあります。 デザインパターンを別の言語から取得する必要はありません。 デザインパターンは、非常にシンプルで短い形式で記述できます。
Javaで最も使用されているデザインパターンはどれですか?
Javaには多くのデザインパターンがあります。 最もよく使用されるデザインパターンはファクトリパターンです。 エンタープライズ開発には多くのアプリケーションがあります。 これは、アプリケーションの具象クラスへの依存を取り除くのに役立ちます。 実際の例を挙げましょう。 eコマースアプリケーションでは、テスト環境と本番環境の両方でユーザーのオブジェクトを作成する必要がある場合があります。 ユーザークラスには、Admin、Shopkeeper、Seller、Userなどの多くのサブクラスがあります。ファクトリパターンの一般的なメインメソッドは次のようになります。publicclass UserFactory {public static Object create(){User user = createAdmin(); //adminがreturnuserを許可されているかどうかを確認します; //現在のユーザーを返します}}。 ユーザークラスが具象クラスに依存していない方法については、こちらをご覧ください。 完全な例ではありませんが、ファクトリパターンがどのように機能するかを示しています。