Defined:
The decorator pattern is the ability to dynamically extend classes without modifying the original class code and inheritance. The traditional programming pattern is the subclass inherits the parent class to implement the method overload, uses the adorner pattern, simply adds a new adorner object, is more flexible, avoids the class quantity and the level too many.
Role:
Component (Decorated object base class)
Concretecomponent (specifically decorated objects)
Decorator (Decorator base class)
Contretedecorator (Specific decorator Class)
Sample code:
The adorner base class interface Component {public function operation ();}
The adorner base class abstract class decorator implements Component {protected $component;
Public function __construct (Component $component) {$this->component = $component;
Public function operation () {$this->component->operation (); }//Specific adorner class Concretecomponent implements Component {public function operation () {echo ' do operation '.
Php_eol; }//Specific decoration Class A class Concretedecoratora extends decorator {public function __construct (Component $component) {pare
Nt::__construct ($component);
Public function operation () {parent::operation (); $this->addedoperationa (); The newly added operation} public function Addedoperationa () {echo ' Add Operation A '.
Php_eol; }//Specific decoration Class B class Concretedecoratorb extends Decorator {public function __construct (Component $component) {pare
Nt::__construct ($component); Public function operation () {ParenT::operation ();
$this->addedoperationb (); The Public Function addedoperationb () {echo ' Add Operation B '.
Php_eol; Class Client {public static function main () {/* Do operation ADD operation A/* $decorat
OrA = new Concretedecoratora (new Concretecomponent ());
$decoratorA->operation (); /* Do operation add operation A Add Operation B */$decoratorB = new Concretedecoratorb ($decoratorA)
;
$decoratorB->operation ();
} client::main ();