Factory Method

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Charakterystyka

Wzorzec Metoda wytwórcza zapewnia standardowy sposób tworzenia przez klasy obiektów innych klas. Typowym jego zastosowaniem jest zwracanie przez funkcję obiektów różnych klas w zależności od wartości parametrów wejściowych.

Założenia

Metoda wytwórcza pozwala na:

  • ujednolicenie interfejsu dla grupy obiektów o tej samej odpowiedzialności,
  • niezależność od konkretnej implementacji, co pozwala na dynamiczną wymianę używanego obiektu
  • hermetyzacje oraz sparametryzowanie procesu tworzenia obiektu

Kiedy używać

Przykładowe implementacje

Przykład z życia wzięty. Jedna treść kilka wyjść. Html, XML, WML, PDF każdy z tych formatów charakteryzuje się innymi cechami. W tym przypadku sprawdza się wzorzec Factory Method.

<?php
 
 /* Fabryka */
 
 interface IRenderer {
 	public function render();	
 }
 
 class HtmlRenderer implements IRenderer {
 
   /* ... */
 
   public function render(){
   	//generujemy html
   }
 
   /* ... */ 	
 
 }
 
 
 class PdfRenderer implements IRenderer {
 
   /* ... */
 
   public function render(){
   	//generujemy pdf
   }
 
   /* ... */ 	
 
 }
 
 class NewsRendererFactory {
 
   public function setTitle($title){
    //...
   }
 
   public function setText($title){
    //...
   }
 
   public static function getRender(){
 
   	 switch(strtolower($_GET['output'])){
 
   	 	case 'html':
   	 	  $renderer = new HtmlRenderer();
   	 	break;
 
   	 	case 'pdf':
   	 	  $renderer = new PdfRenderer();
   	 	break;
 
   	 }
 
   }
 
 }
 
 
 $newsRender = NewsRendererFactory::getRender();
 //ustawiemy tytul, tersc itp.
 $newsRender -> setTitle('PHP 6 wydane!');
 $newsRender -> setText('długo oczekiwana 6 wersja PHP została wydana!');
 $newsRender -> render();
 
?>

Na samym początku deklarujemy interfejs IRenderer z metodą publiczną render() która będzie generowała wyjście. Następnie przykładowe 2 klasy HtmlRenderer oraz PdfRenderer implementujące interfejs IRenderer. Na końcu znajduje się klasa News w której statycznej metodzie aplikacja wybiera w jakim obiekt wyjścia zwrócić.

Polecamy również

Strona ta opisuje jeden z Wzorców projektowych.

Wzorce projektowe: Definicja | Zalety | Podział wzorców | Lista wzorców