Maison  >  Article  >  développement back-end  >  Analyse détaillée du modèle d'adaptateur en php (avec code)

Analyse détaillée du modèle d'adaptateur en php (avec code)

不言
不言original
2018-08-10 17:19:392337parcourir

Cet article vous apporte une analyse détaillée du mode adaptateur en PHP (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Modèle d'adaptateur (implémentation PHP)

par exemple

//Rôle cible

1 L'interface a plusieurs méthodes

//. Rôle source

1. Ne possède que certaines méthodes

//Rôle d'adaptateur

1. Délégue les appels aux méthodes qui existent déjà dans le rôle source

2. . Rôle d'adaptateur D'autres méthodes sont nécessaires pour ajouter des clients

//Client

1. Définir des méthodes statiques

2. Instancier les rôles source

3. construction La méthode sera injectée dans le

Mode Adaptateur : convertir l'interface d'une classe en l'interface d'une autre classe attendue par le client. Les adaptateurs permettent aux classes dont les interfaces sont initialement incompatibles de fonctionner ensemble de manière transparente.

[Rôles principaux dans le modèle d'adaptateur]

Rôle cible : Définir les interfaces utilisées par le client liées à des champs spécifiques, c'est ce que nous attendons

Source (Adapté) rôle : L'interface qui doit être adaptée

Rôle de l'adaptateur (Adaptateur) : Adapter l'interface Adaptee et l'interface cible ; l'adaptateur est le cœur de ce modèle, et l'adaptateur convertit l'interface source en interface cible ; , ce rôle est une classe concrète.

En fait, il y a une prise à deux ports (Adaptee) sur le mur de votre maison, mais vous avez acheté un ventilateur électrique (Target) qui nécessite trois ports. Dans ce cas, vous avez besoin d'une prise (Adaptateur). ).

L'adaptateur de classe adopte la méthode d'implémentation "d'héritage multiple", qui entraîne un couplage élevé indésirable, son utilisation n'est donc généralement pas recommandée. L'adaptateur d'objet adopte la méthode « combinaison d'objets », qui est plus conforme à l'esprit du couplage lâche.

L'adaptateur de classe utilise l'héritage

par exemple :

/**
 * 目标角色
 */
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();
 
    }
 
}

L'adaptateur d'objet utilise la délégation

par exemple :

/**
 * 目标角色
 */
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();
 
    }
 
}

Recommandations associées :

Comment php génère-t-il des classes pour les fichiers HTML ? Comment générer une classe de fichier html en php

Comment déboguer le code PHP ? Résumé des méthodes de débogage du code PHP (recommandé)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn