Qu'est-ce que le modèle d'adaptateur et quels sont ses scénarios d'application ?

齐天大圣
Libérer: 2023-04-09 12:38:01
original
5184 Les gens l'ont consulté

Le modèle d'adaptateur est un modèle de conception structurelle et c'est également un modèle de conception couramment utilisé.

Modèle d'adaptateur

Le modèle d'adaptateur est facile à comprendre D'après le sens littéral, nous savons qu'il est utilisé pour l'adaptation. Son rôle est de convertir l'interface initialement incompatible en interface attendue par le client, afin que les classes qui ne peuvent pas travailler ensemble en raison d'interfaces incompatibles puissent travailler ensemble. Pour expliquer avec un exemple de la vie quotidienne, nous savons qu'il existe de nombreux types de ports de chargement pour téléphones portables, grands trous et petits trous pour Apple et Android. Souvent, lorsque notre téléphone est déchargé et que nous empruntons un chargeur, nous constatons que c'est le cas. n'est pas compatible avec notre propre trou de téléphone. Il existe désormais sur le marché des adaptateurs avec chargeurs. Avec les adaptateurs, nous pouvons recharger nos téléphones portables.

Il y a trois rôles dans l'adaptateur : classe abstraite cible (Target), adaptateur (Adaptee), adaptateur (Adaptor)

Adaptateur de classe et adaptateur d'objet

Les adaptateurs sont divisés en adaptateurs de classe et en adaptateurs d'objet. Expliquons-les à travers un exemple ci-dessous.

Ce qui suit est un exemple d'adaptateur de classe :

class ITarget
{
    function f1();
    function f2();
    function f3();
}

class Adaptee
{
    public function f1(){……};
    public function f2(){……};
    public function a(){……};
}

// 类适配器,基于继承
class Adaptor extends Adaptee
{
    public function f3 () {
        // 重新实现f3
    }
}
Copier après la connexion

Ce qui suit est un exemple d'adaptateur d'objet

class ITarget
{
    function f1();
    function f2();
    function f3();
}

class Adaptee
{
    public function a1(){……};
    public function b1(){……};
    public function c1(){……};
}

// 对象适配器,基于组合
class Adaptor 
{
    private $adaptee = null;
    
    public function __contrust (Adaptee $adaptee)
    {
        $this->adaptee = $adaptee;
        ……
    }
    
    public function f1() {
        $this->adaptee->a1();
    }
    
    public function f2() {
        // 重新实现f2
    }
    
    public function f3 () {
        $this->adaptee->a3();
    }
}
Copier après la connexion

Comment devrions-nous choisir entre ces deux méthodes d'implémentation. Si la plupart des méthodes de l'adaptateur peuvent être réutilisées, choisissez d'utiliser un adaptateur de classe, sinon utilisez un adaptateur d'objet. Les adaptateurs d'objets sont plus flexibles.

Scénarios d'application

Ce qui suit est une introduction aux principaux scénarios d'utilisation de l'adaptateur

  • L'emballage est défectueux La conception de l'interface de

  • unifie la conception de l'interface de plusieurs classes. Par exemple, un système de paiement dispose de trois méthodes de paiement différentes : le paiement WeChat, le paiement Alipay et le paiement bancaire en ligne. .Les méthodes d'implémentation sont toutes différentes, nous pouvons donc utiliser le modèle d'adaptateur pour leur permettre d'avoir une méthode unifiée pour une utilisation externe. De cette façon, il est très pratique pour nous d'appeler.

  • Compatible avec l'ancienne version de l'interface, celle-ci est souvent utilisée dans nos mises à niveau système.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!