PHPのアダプターパターンを学ぶ

WBOY
リリース: 2016-07-25 09:05:57
オリジナル
956 人が閲覧しました
PHP デザイン パターンのアダプター モード、つまりアダプター (エイリアス ラッパー) モード: あるクラスのインターフェイスを、顧客が期待する別のクラスのインターフェイスに変換します。アダプターを使用すると、元々互換性のないインターフェイスを持つクラスがシームレスに連携できるようになります。

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

このデザインパターンのキーポイント: 1) アダプター パターンは主に「既存のクラスを再利用したいが、インターフェースが再利用環境の要件と一致しない」場合に使用され、レガシー コードの再利用やクラス ライブラリの移行などに非常に役立ちます。 2) アダプタパターンにはオブジェクトアダプタとクラスアダプタの 2 つの実装構造がありますが、クラスアダプタは「多重継承」実装方式を採用しており、望ましくない高結合をもたらすため、一般的には推奨されません。 オブジェクト アダプタは、より疎結合の精神に沿った「オブジェクト結合」方式を採用しています。

次の 2 つの写真を通してその構造を見てみましょう: PHPのアダプターパターンを学ぶ アダプタパターンのクラス構成図(継承) PHPのアダプターパターンを学ぶ オブジェクトのアダプターパターン構造図(構成)

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

ターゲット: 特定のフィールドに関連してクラ​​イアントが使用するインターフェースを定義します。 パブリック インターフェイス ターゲット { void request();}

適応者: 今すぐ適応する必要がある既存のインターフェース public class Adapte{ public void specificRequest(){}}

Adapter: Adapte インターフェースと Target インターフェースを適応させます public class アダプターは Target{ public Adaptor(Adapteeadaptee) { super() } public void request() {adaptee.specificRequest() }

適用範囲: 1) システムは既存のクラスを使用する必要があり、このタイプのインターフェイスはシステムのニーズを満たしていません。 2) 将来導入される可能性のあるクラスなど、相互に密接に関連していないいくつかのクラスを操作するために使用できる再利用可能なクラスを作成したいと考えています。これらのソース クラスには、必ずしも複雑なインターフェイスがあるわけではありません。 3) (オブジェクトアダプタの場合) 設計上、既存の複数のサブクラスのインターフェースを変更する必要があり、クラスアダプタモードを使用する場合、サブクラスごとにアダプタを作成する必要があり現実的ではありません。

このデザインパターンの長所と短所を見てみましょう:

クラスアダプター: 1) 特定のアダプタ クラスを使用して、Adapte と Target を一致させます。その結果、クラスとそのすべてのサブクラスを一致させたい場合、クラスのアダプターはその仕事を実行できません。 2) アダプタは Adaptee のサブクラスであるため、アダプタが Adaptee の一部の動作をオーバーライド (再定義) できるようにします。

オブジェクトアダプター: 1) アダプタが複数のアダプティ、つまりアダプティ自体とそのすべてのサブクラス (サブクラスがある場合) を同時に動作できるようにします。アダプターは、すべての Adapte に一度に機能を追加することもできます。 2)、Adaptee の動作をオーバーライド (再定義) することが困難になります。 Adaptee メソッドをオーバーライドする必要がある場合は、まず Adaptee メソッドをオーバーライドするための Adaptee のサブクラスを作成し、次にこのサブクラスを適応用の実際の Adaptee ソースとして使用する必要があります。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!