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 } }
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(); } }
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!