PHPでのアダプターパターンの詳細分析(コード付き)

不言
リリース: 2023-04-03 18:10:01
オリジナル
2394 人が閲覧しました

この記事では、PHP のアダプター モードの詳細な分析 (コード付き) を紹介します。これには一定の参考値があります。必要な友人は参照できます。お役に立てれば幸いです。

アダプター パターン (PHP 実装)

例:

//ターゲット ロール

1. インターフェイスには複数のメソッドがあります

//ソース ロール

1. 一部の部分的なメソッドのみを所有します

//アダプター ロール

1. ソース ロールにすでに存在するメソッドへの呼び出しを委任します

2. クライアントを追加するには適切な他のメソッドが必要です

//Client

1. 静的メソッドを設定します

2. ソース ロールをインスタンス化します

3. スルー構築 メソッドは

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

#[アダプター パターンの主な役割]

ターゲット ロール: 特定のドメインに関連するクライアントによって使用されるインターフェイスを定義します。これが期待されるものです

Source (Adaptee ) 役割: 適応する必要があるインターフェース

Adapter (アダプター) 役割: Adaptee インターフェースとターゲット・インターフェースを適応します。アダプターはこのモデルの中核であり、アダプターはソース・インターフェースをターゲットに変換します。インターフェイス、この役割は具象クラスです。

実は、あなたの家の壁には2ポートのコンセント(Adaptee)がありますが、3ポート必要な扇風機(Target)を購入した場合、コンセント(Adapter)が必要になります。 )。

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

クラス アダプターは継承を使用します

例:

/**
 * 目标角色
 */
interface Target {
 
    /**
     * 源类也有的方法1
     */
    public function sampleMethod1();
 
    /**
     * 源类没有的方法2
     */
    public function sampleMethod2();
}
 
/**
 * 源角色
 */
class Adaptee {
 
    /**
     * 源类含有的方法
     */
    public function sampleMethod1() {
        echo &#39;Adaptee sampleMethod1 <br />&#39;;
    }
}
 
/**
 * 类适配器角色
 */
class Adapter extends Adaptee implements Target {
 
    /**
     * 源类中没有sampleMethod2方法,在此补充
     */
    public function sampleMethod2() {
        echo &#39;Adapter sampleMethod2 <br />&#39;;
    }
 
}
 
class Client {
 
    /**
     * Main program.
     */
    public static function main() {
        $adapter = new Adapter();
        $adapter->sampleMethod1();
        $adapter->sampleMethod2();
 
    }
 
}
ログイン後にコピー

オブジェクト アダプターは委任を使用します

例:

/**
 * 目标角色
 */
interface Target {
 
    /**
     * 源类也有的方法1
     */
    public function sampleMethod1();
 
    /**
     * 源类没有的方法2
     */
    public function sampleMethod2();
}
 
/**
 * 源角色
 */
class Adaptee {
 
    /**
     * 源类含有的方法
     */
    public function sampleMethod1() {
        echo &#39;Adaptee sampleMethod1 <br />&#39;;
    }
}
 
/**
 * 类适配器角色
 */
class Adapter implements Target {
 
    private $_adaptee;
 
    public function __construct(Adaptee $adaptee) {
        $this->_adaptee = $adaptee;
    }
 
    /**
     * 委派调用Adaptee的sampleMethod1方法
     */
    public function sampleMethod1() {
        $this->_adaptee->sampleMethod1();
    }
 
    /**
     * 源类中没有sampleMethod2方法,在此补充
     */
    public function sampleMethod2() {
        echo &#39;Adapter sampleMethod2 <br />&#39;;
    }
 
}
 
class Client {
 
    /**
     * Main program.
     */
    public static function main() {
        $adaptee = new Adaptee();
        $adapter = new Adapter($adaptee);
        $adapter->sampleMethod1();
        $adapter->sampleMethod2();
 
    }
 
}
ログイン後にコピー

関連する推奨事項:

php はどのようにして HTML ファイルのクラスを生成するのでしょうか? phpでHTMLファイルクラスを生成する方法

PHPコードをデバッグするにはどうすればよいですか? PHP コードのデバッグ方法のまとめ (推奨)

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

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