Konvertieren Sie Operationen für bestimmte ähnliche Klassen in eine einheitliche „Schnittstelle“ (hier ist eine Metapher) – Adapter, oder metaphorisch als „Schnittstelle“, die diese Klassendetails vereinheitlicht oder blockiert. Adaptermuster erstellt außerdem einen „Mechanismus“, sodass „adaptive“ Klassen einfach hinzugefügt oder gelöscht werden können, ohne den Code zu ändern, der mit dem Adapter interagiert, im Einklang mit „Code reduzieren“. Entwurfsprinzip der Kopplung zwischen „Es handelt sich um ein sehr häufig verwendetes Entwurfsmuster
Verwandte Empfehlungen:<?php /* * 适配器模式 */ abstract class Toy { public abstract function openMouth(); public abstract function closeMouth(); } class Dog extends Toy { public function openMouth() { echo "Dog open Mouth\n"; } public function closeMouth() { echo "Dog close Mouth\n"; } } class Cat extends Toy { public function openMouth() { echo "Cat open Mouth\n"; } public function closeMouth() { echo "Cat close Mouth\n"; } } //目标角色:红枣遥控公司 interface RedTarget { public function doMouthOpen(); public function doMouthClose(); } //目标角色:绿枣遥控公司及 interface GreenTarget { public function operateMouth($type = 0); } //类适配器角色:红枣遥控公司 class RedAdapter implements RedTarget { private $adaptee; function __construct(Toy $adaptee) { $this->adaptee = $adaptee; } //委派调用Adaptee的sampleMethod1方法 public function doMouthOpen() { $this->adaptee->openMouth(); } public function doMouthClose() { $this->adaptee->closeMouth(); } } //类适配器角色:绿枣遥控公司 class GreenAdapter implements GreenTarget { private $adaptee; function __construct(Toy $adaptee) { $this->adaptee = $adaptee; } //委派调用Adaptee:GreenTarget的operateMouth方法 public function operateMouth($type = 0) { if ($type) { $this->adaptee->openMouth(); } else { $this->adaptee->closeMouth(); } } } class testDriver //客户端,客户想要那种就实现那种 { public function run() { //实例化一只狗玩具 $adaptee_dog = new Dog(); echo "没有适配器的普通模式"; $adaptee_dog->openMouth(); $adaptee_dog->closeMouth(); echo "给狗套上红枣适配器\n"; $adapter_red = new RedAdapter($adaptee_dog); //张嘴 $adapter_red->doMouthOpen(); //闭嘴 $adapter_red->doMouthClose(); echo "给狗套上绿枣适配器\n"; $adapter_green = new GreenAdapter($adaptee_dog); //张嘴 $adapter_green->operateMouth(1); //闭嘴 $adapter_green->operateMouth(0); } } $test = new testDriver(); $test->run();
Einführung in PHP Adaptermuster
Codeanalyse für Anpassungen wie den PHP-Adaptermodus
Einführung in den PHP-Adaptermodus_PHP-TutorialDas obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Adaptermusters von PHP-Entwurfsmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!