ホームページ > バックエンド開発 > PHPチュートリアル > PHPアダプターパターンの紹介

PHPアダプターパターンの紹介

怪我咯
リリース: 2023-03-12 17:54:01
オリジナル
1852 人が閲覧しました

アダプター (エイリアス ラッパー) パターン: あるクラスのインターフェイスを、顧客が期待する別のクラスのインターフェイスに変換します。アダプターを使用すると、互換性のないインターフェイスを持つクラスがシームレスに連携できるようになります

重要なポイント:

1. アダプターパターンは主に「既存のクラスを再利用したいが、インターフェースが再利用環境の要件と一致しない」場合に使用され、レガシーコードの再利用やクラスライブラリの移行などに非常に役立ちます。

2. アダプターパターンにはオブジェクトアダプターとクラスアダプターの2つの実装構造がありますが、クラスアダプターは「多重継承」実装方式を採用しており、望ましくない高結合をもたらすため、一般的には推奨されません。オブジェクト アダプタは、より疎結合の精神に沿った「オブジェクト結合」方式を採用しています。

実装:

PHPアダプターパターンの紹介

クラスアダプターのパターン構造図(継承)

PHPアダプターパターンの紹介

オブジェクトアダプターのパターン構造図(組み合わせ)

(オブジェクトアダプターのコード実装)

ターゲット: クライアントが使用するものとインターフェースを定義特定のフィールドに関連する

public interface Target { void request();}
ログイン後にコピー

Adaptee: 今すぐ調整する必要がある既存のインターフェース

public class Adaptee{ public void specificRequest(){}}
ログイン後にコピー

Adapter: Adaptee インターフェースと Target インターフェースを適応させる

public class Adapter implements Target{ public Adapter(Adaptee adaptee) { super(); this.adaptee = adaptee; } public void request() { adaptee.specificRequest(); } private Adaptee adaptee;}
ログイン後にコピー

適用性:

1. システムは既存のクラスとインターフェースを使用する必要があります。このクラスのはシステムのニーズを満たしていません。

2. 将来導入される可能性のあるクラスなど、相互に密接に関連していないいくつかのクラスを操作するために使用できる再利用可能なクラスを作成したい。これらのソース クラスには、必ずしも複雑なインターフェイスがあるわけではありません。

3. (オブジェクトアダプターの場合) クラスアダプターパターンを使用する場合、設計上、複数の既存のサブクラスのインターフェースを変更する必要があり、サブクラスごとにアダプターを作成する必要があり、現実的ではありません。

効果、利点、欠点:

クラスアダプターの場合:

1. Adapte と Target を一致させるために特定のアダプター クラスを使用します。その結果、クラスとそのすべてのサブクラスを一致させたい場合、クラスのアダプターはその仕事を実行できません。

2. アダプターは Adaptee のサブクラスであるため、アダプターが Adaptee の一部の 動作 をオーバーライド (再定義) できるようにします。

オブジェクトアダプターの場合:

1. アダプターが複数の Adapte 、つまり Adaptee 自体とそのすべてのサブクラス (サブクラスがある場合) を同時に操作できるようにします。アダプターは、すべての Adapte に一度に機能を追加することもできます。

2. Adaptee の動作をオーバーライド (再定義) することが困難になります。 Adaptee メソッドをオーバーライドする必要がある場合は、まず Adaptee メソッドをオーバーライドするための Adaptee のサブクラスを作成し、次にこのサブクラスを適応用の実際の Adaptee ソースとして使用する必要があります。

以上がPHPアダプターパターンの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート