Javaのアダプタパターンに関するグラフィックコードの詳細説明
この記事では主に Java アダプター モードを紹介します。これは非常に優れていると思いますので、参考にしてください。エディターをフォローして見てみましょう
1. コンセプト
アダプター モードは、あるインターフェイスを顧客が望む別のインターフェイスに変換します。これにより、インターフェイスに互換性がないために当初は連携できなかったクラスが連携できるようになります。
2. UML
3. より鮮明な例
4.分析
私は去年ノートを買いました。さらに、このノートブックにはロジクール G1 光学スリーブが装備されています。何が面倒かというと、光電ケースのマウスはUSBインターフェース、キーボードはPS2インターフェースなのですが、私のノートPCにはPS2インターフェースがありません。そこで、市場に行ってアダプターを購入しました。
そこで、いくつかのクラスを抽象化しました。
1.PS2Port (PS2インターフェース)。
2.USBPort (USBインターフェース)。
3.PS2ToUSB (オブジェクトアダプター)、PS2インターフェースをUSBインターフェースに置き換えます。
4.TestAdapter (テストクラス)、クライアント。
PS2ポート
package com.bjpowernode.adapter; /** * PS2接口,圆口 * @author eason * */ public interface PS2Port { public void workWithPS2(); }
USBポート
package com.bjpowernode.adapter; /** * USB接口,U口 * @author eason * */ public interface USBPort { public void workWithUSB(); }
PS2ToUSB
package com.bjpowernode.adapter; /** * 对象适配器 * 将PS2接口装换成USB接口 * 所以此类类型是USB接口(implements USBPort) + 成员变量ps2Port * @author eason * */ public class PS2ToUSB implements USBPort{ private PS2Port ps2Port; public PS2ToUSB(PS2Port ps2Port) { this.ps2Port = ps2Port; } @Override public void workWithUSB() { System.out.println("转换的关键在这里,本来是"); ps2Port.workWithPS2(); System.out.println("经过你的转换,现在是USB工作中"); } }
テストアダプター
package com.bjpowernode.adapter; /** * 测试类 * client * @author eason * */ public class TestAdapter { public static void main(String[] args) { //我现在有一个PS2接口 PS2Port ps2Port = new PS2Port() { @Override public void workWithPS2() { System.out.println("PS2工作中"); } }; //但是我需要的是一个USB接口啊,对我(client)来说,我只认识USB接口 //经过PS2ToUSB的转换,PS2接口变成了USB接口 USBPort ps2ToUsbPort = new PS2ToUSB(ps2Port); ps2ToUsbPort.workWithUSB(); } }
5. オブジェクトアダプターとクラスアダプター
上記のアダプターはオブジェクトアダプターです。クラスアダプターをもう一度見てみましょう。
PS2ToUSB、簡単なシミュレーションです。 Java では多重継承が許可されていないため、Java にはクラス パターン コードはなく、アイデアのみが存在します。
package com.bjpowernode.adapter; /** * 类适配器 * @author eason * */ public class PS2ToUSB implements USBPort, PS2Port{ //重写workWithUSB,把工作交给workWithPS2 @Override public void workWithUSB() { workWithPS2(); } }
違いは、オブジェクトアダプターはクライアントが希望するインターフェース(USB)を実装し、内部で適応オブジェクト(PS2)への参照を持ち、組み合わせにより適応機能を実現することです。クラスアダプタは、クライアントが希望するインターフェース(USB)と適応オブジェクトインターフェース(PS2)を実装し、継承により適応機能を実現する。
6. 使用シナリオと使用経験
1. いくつかの既存のクラスを再利用したいと考えていますが、インターフェースが再利用環境の要件と一致しません。
2. 実際、初期の設計ではアダプター モードは少し役に立ちませんが、統合インターフェイスのリファクタリングを検討する必要があります。
7. アダプター パターンとデコレーター パターン
両方ともオブジェクトをラップするために使用できます。 本質的な違いは
1. アダプター パターン: 1 つのインターフェイスを別のインターフェイスに変換します。
2. デコレータ パターン: インターフェイスは変更せず、責任を追加するだけです。
以上がJavaのアダプタパターンに関するグラフィックコードの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。
