Decorator
Z PHPEdia.pl
przykładowa implementacja
<?php /** * Kod opracowano na podstawie książki "Projektowani zorientowane obiektowo - Wzorce Projektowe, wydawnictwa HELION * @link http://helion.pl/ksiazki/probw2.htm */ abstract class Dekorator { private $komponent; public function __construct( $komponent ) { $this->komponent = $komponent; } public function wywolaj() { if( $this->komponent != null) $this->komponent->drukuj(); } } class Naglowek1 extends Dekorator { public function __construct( $komponent ) { parent::__construct( $komponent ); } public function drukuj() { echo 'naglowek1<br />'; parent::wywolaj(); } } class Stopka1 extends Dekorator { public function __construct( $komponent ) { parent::__construct( $komponent ); } public function drukuj() { parent::wywolaj(); echo 'stopka1<br />'; } } class Stopka2 extends Dekorator { public function __construct( $komponent ) { parent::__construct( $komponent ); } public function drukuj() { parent::wywolaj(); echo 'stopka2<br />'; } } class Naglowek2 extends Dekorator { public function __construct( $komponent ) { parent::__construct( $komponent ); } public function drukuj() { echo 'naglowek2<br />'; parent::wywolaj(); } } class Potwierdzenie { public function drukuj() { echo 'potwierdzenie<br />'; } } /** * przykładowe użycie: */ $test = new Stopka1( new Naglowek1( new Naglowek2( new Stopka2( new Potwierdzenie() ) ) ) ); $test->drukuj(); /* Wynik: */ naglowek1 naglowek2 potwierdzenie stopka2 stopka1 ?>
Strona ta opisuje jeden z Wzorców projektowych.
Wzorce projektowe: Definicja | Zalety | Podział wzorców | Lista wzorców
To jest tylko zalążek artykułu. Jeśli możesz, rozbuduj go.
