![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 6.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jak zaimplementowac ten wzorzec w praktyce?
tak by moc wywolac np. Kod <? $obj=factory::make("myClass"); ?> co zwroci do zmiennej obiekt klasy myClass googlowalem, ale nic konkretnego nie wiem jak się za to zabrać. Ten post edytował Beynar 20.01.2008, 22:01:42 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 12 Dołączył: 6.01.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Zrobię to na przykładzie. Mamy Pizzerię, która przygotowuje pizze, samą Pizzę oraz fabrykę pizz (PizzaFactory).
Wzorzec fabryki wygląda następująco: Kod class Pizzeria { private $fabryka; function __construct() { $this->fabryka = new PizzaFactory(); } function przygotujPizze($nazwaPizzy) { $pizza = $this->fabryka->make($nazwaPizzy); $this->podgrzejPizze($pizza); //... itd return $pizza; } } class PizzaFactory { function make($nazwaPizzy) { //przykladowa implementacja if ($nazwaPizzy == "margerita") return new Margerita(); else if ($nazwaPizzy == "americana") return new Americana(); //... itd } } Być może ten wzorzec nie jest tym czego potrzebujesz dokładnie (w twoim kodzie używasz funkcji statycznej). Są jeszcze inne podobne wzorce, które mogą być pomocne: metoda fabrykująca, singleton |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
? -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 6.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
@Cotter tylko, ze tam na sztywno musze w fabryce jaki warunek powoluje jaka klase
Kod if ($nazwaPizzy == "margerita") return new Margerita(); a ja potrzebuje cos dynamicznego.. @dr_bonzo o dokladnie cos takiego mi chodzilo ![]() Dzieki Panowie za pomoc ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 14:29 |