9
Wzorzec factory należy do wzorców konstrukcyjnych. Pozwala na tworzenie obiektów bez konieczności specyfikacji klas na podstawie której będą tworzone. Umożliwia on stworzenie osobnej metody odpowiedzialnej za tworzenie nowych obiektów.
Aby pokazać działanie wzorca factory posłużę się prostym przykładem. Załóżmy, że mam kontroler, który w zależności od typu przekazanego pliku musi stworzyć nowy obiekt widoku i wywołać w nim metodę generującą widok. Zacznę od stworzenia interfejsu IView dla widoków:
-
interface IView
-
{
-
function render();
-
}
Następnie tworzę klasy dla widoków implementujące interfejs IView:
-
class HtmlView implements IView
-
{
-
function render()
-
{
-
// generowanie widoku html
-
// [...]
-
}
-
}
-
-
class XmlView implements IView
-
{
-
function render()
-
{
-
// generowanie widoku xml
-
// [...]
-
}
-
}
Pozostaje mi stworzenie klasy głównej:
Metoda renderView() w zależności od rozszerzenia pliku przekazanego w parametrze zwraca obiekt odpowiedniej klasy. Na koniec pozostało jeszcze tylko uruchomienie metody renderView() klasy View:
-
$view = View::factory('index.html');
-
$view->render();
Jak widać implementacja wzorca factory jest bardzo prosta i przydatna zarazem kiedy zachodzi potrzeba tworzenia obiektów bez specyfikacji klas.
Więcej o wzorcu factory:
http://pl.wikipedia.org/wiki/Wzorzec_metody_fabrykującej
http://www.fluffycat.com/PHP-Design-Patterns/Factory-Method
http://www.vincehuston.org/dp/factory_method.html
http://www.phppatterns.com/docs/design/the_factory_method
Leave a Reply
You must be logged in to post a comment.