Java プログラミング スキルの向上: アダプター パターンとオブザーバー パターンの実装をマスターする
Java プログラミング スキルの向上: アダプター モードとオブザーバー モードの実装をマスターするには、特定のコード例が必要です
はじめに:
日々のソフトウェア開発では、次のことが必要になることがよくあります。異なるクラス間の互換性の問題に対処し、さまざまなユーザー インターフェイスのイベント監視と処理も実装する必要があります。アダプター パターンとオブザーバー パターンは、これらの問題を効果的に解決できる 2 つの一般的に使用される設計パターンです。この記事では、アダプター パターンとオブザーバー パターンの実装を詳しく紹介し、読者の理解を深めるために具体的な Java コード例を示します。
アダプター パターンは、既存のクラスが互換性のないクラスと連携できるようにする構造設計パターンです。アダプター パターンは、中間アダプター クラスを作成することによって、クライアントがインターフェイスを使用できるようにインターフェイスを変換します。以下は、単純なアダプター パターンの例です。
// 目标接口 interface MediaPlayer { void play(String audioType, String fileName); } // 被适配的类 class Mp3Player { public void playMp3(String fileName) { System.out.println("Playing mp3 file: " + fileName); } } // 适配器类 class MediaAdapter implements MediaPlayer { private Mp3Player mp3Player; public MediaAdapter() { mp3Player = new Mp3Player(); } @Override public void play(String audioType, String fileName) { if (audioType.equalsIgnoreCase("mp3")) { mp3Player.playMp3(fileName); } } } // 客户端代码 public class AudioPlayer implements MediaPlayer { private MediaAdapter mediaAdapter; @Override public void play(String audioType, String fileName) { if (audioType.equalsIgnoreCase("mp3")) { System.out.println("Playing mp3 file: " + fileName); } else if (audioType.equalsIgnoreCase("vlc") || audioType.equalsIgnoreCase("mp4")) { mediaAdapter = new MediaAdapter(); mediaAdapter.play(audioType, fileName); } else { System.out.println("Invalid media type: " + audioType); } } public static void main(String[] args) { AudioPlayer audioPlayer = new AudioPlayer(); audioPlayer.play("mp3", "music.mp3"); audioPlayer.play("vlc", "video.vlc"); audioPlayer.play("mp4", "video.mp4"); } }
上記の例には、ターゲット インターフェイス MediaPlayer と、適応されたクラス Mp3Player があります。 Mp3Player と MediaPlayer インターフェイスとの互換性を持たせるために、MediaPlayer インターフェイスを実装し、通話要求を Mp3Player クラスに転送するアダプター クラス MediaAdapter を作成しました。このようにして、クライアント コードは MediaPlayer インターフェイスを通じてさまざまな種類のメディア ファイルを操作できます。
オブザーバー パターンは動作設計パターンであり、1 対多の依存関係を定義し、複数のオブザーバー オブジェクトが特定のオブジェクトを同時に監視できるようにします。 time. トピック オブジェクトが変更されたときに、すべてのオブザーバー オブジェクトに更新を通知するトピック オブジェクト。以下は、単純なオブザーバー パターンの例です。
import java.util.ArrayList; import java.util.List; // 主题接口 interface Subject { void registerObserver(Observer observer); void unregisterObserver(Observer observer); void notifyObservers(); } // 观察者接口 interface Observer { void update(String message); } // 具体主题类 class WeatherStation implements Subject { private List<Observer> observers; private String weather; public WeatherStation() { observers = new ArrayList<>(); } @Override public void registerObserver(Observer observer) { observers.add(observer); } @Override public void unregisterObserver(Observer observer) { observers.remove(observer); } @Override public void notifyObservers() { for (Observer observer : observers) { observer.update(weather); } } public void setWeather(String weather) { this.weather = weather; notifyObservers(); } } // 具体观察者类 class WeatherDisplay implements Observer { private String latestWeather; @Override public void update(String message) { latestWeather = message; display(); } private void display() { System.out.println("Latest weather: " + latestWeather); } } // 客户端代码 public class ObserverPatternExample { public static void main(String[] args) { WeatherStation weatherStation = new WeatherStation(); WeatherDisplay weatherDisplay1 = new WeatherDisplay(); WeatherDisplay weatherDisplay2 = new WeatherDisplay(); weatherStation.registerObserver(weatherDisplay1); weatherStation.registerObserver(weatherDisplay2); weatherStation.setWeather("Sunny"); weatherStation.setWeather("Cloudy"); weatherStation.unregisterObserver(weatherDisplay2); weatherStation.setWeather("Rainy"); } }
上記の例には、トピック インターフェイス Subject と、特定のトピック クラス WeatherStation があります。また、オブザーバー インターフェイス Observer と、特定のオブザーバー クラス WeatherDisplay もあります。 WeatherStation の天気が変化すると、登録されているすべてのオブザーバー オブジェクトは、notifyObservers メソッドを通じて通知され、オブザーバー オブジェクトは update メソッドを呼び出してステータスを更新します。このようにして、複数のオブザーバーを簡単に実装して、同じトピックを監視し、応答することができます。
以上がJava プログラミング スキルの向上: アダプター パターンとオブザーバー パターンの実装をマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
