Decorator-ModulModul kann die Funktion einer Klasse dynamisch hinzufügen und ändern. Wenn Sie zusätzliche Funktionen ändern und hinzufügen möchten, ist dies der Fall Schreiben Sie eine Unterklasse, um sie zu erben und die Klassenmethode mithilfe des Dekoratormusters erneut zu implementieren. Sie müssen zur Laufzeit lediglich ein DekoratormusterObjekt kann implementiert werden, um maximale Flexibilität zu erreichen
<?php /* * 装饰模式 */ abstract class Beverage { public $_name; abstract public function Cost(); } // 被装饰者类 class Coffee extends Beverage { public function construct() { $this->_name = 'Coffee'; } public function Cost() { return 1.00; } } // 以下三个类是装饰者相关类 class CondimentDecorator extends Beverage //装饰类 { public function construct() { $this->_name = 'Condiment'; } public function Cost() { return 0.1; } } class Milk extends CondimentDecorator //牛奶 配料 --装饰者 { public $_beverage; public function construct($beverage) { if ($beverage instanceof Beverage) { $this->_beverage = $beverage; } else exit('Failure'); } public function Cost() { return $this->_beverage->Cost() + 0.2; } } class Sugar extends CondimentDecorator //糖 配料 --装饰者 { public $_beverage; public function construct($beverage) { $this->_name = 'Sugar'; if ($beverage instanceof Beverage) { $this->_beverage = $beverage; } else { exit('Failure'); } } public function Cost() { return $this->_beverage->Cost() + 0.2; } } // Test Case //1.拿杯咖啡 $coffee = new Coffee(); //2.加点牛奶 $coffee = new Milk($coffee); //3.加点糖 $coffee = new Sugar($coffee); echo $coffee->Cost(); echo $coffee->_name;
Verwandte Empfehlungen:
Detaillierter Beispielcode des PHP-Dekorationsmodus
Einfach zu verwenden PHP-Designmuster-Singleton-Muster verstehen
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Dekoratormusters von PHP-Entwurfsmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!