Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wzorce fabryki - prośba o wyjaśnienie, opinię
ogar
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 24.08.2012

Ostrzeżenie: (0%)
-----


Przepraszam, że tutaj, ale nie mam uprawnień do pisania w Pro.

1. Robię projekt prostej biblioteki. Zastosowałem factory pattern i factory method do generowania obiektów biblioteki jak: książka, czasopismo, itp. Są one subtypem klasy której obiektu nie można stworzyć, ponieważ nabija ona licznik elementów i ustawia unikalne dane. Dodatkowo mam klasę użytkownik. I tu powstaje dylemat. Elementy biblioteki tworzę przez factory method. Klienta mam jdnego typu, bez subklas, więc nie ma sensu tworzyć żadnej fabryki (chyba, że się mylę), tylko że teraz nie będę mógł tworzyć wszystkich elementów bez podawania ich typu co chyba nie jest dobre.

2. Jeśli zakłądając miałbym rodziny obiektów, które miałbym wygenerować dynamicznie to wtedy powinienem stworzyć fabryki dla każdego typu obiektów? Fabryka z książkami, czasopismami itp., druga z rodzajem użytkowniów itd.?

Ten post edytował ogar 24.08.2012, 19:13:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Wzorzec fabryki umozliwia lancuchowanie, np.
  1. User::factory('user_name')->edit(array('dane'))->logout();
Innego zastosowania nie widze, poniewaz kazde wywolanie metody factory() powoduje tylko stworzenie nowego obiektu i zwrocenie go. Ponadto kazda metoda, ktora cos robi, a nie zwraca konkretnych danych powinna zwracac $this tak, aby lancuchowanie bylo mozliwe.

W tym przypadku metoda edit moze zwrocic true/false powodzenie/niepowodzenie, ale moze tez rzucic wyjatek podczas niepowodzenia i zwrocic $this. Osobiscie uzywam tego wzorca gdzie sie tylko da, bo taki kod jest dla mnie bardziej przejrzysty, ale sa tez programisci, ktorzy sa przeciwni temu. Musisz sam zdecydowac.

Ten post edytował lukaskolista 25.08.2012, 08:29:51
Go to the top of the page
+Quote Post
pamil
post
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 15
Dołączył: 12.08.2012
Skąd: Zabrze

Ostrzeżenie: (10%)
X----


Wychwalajmy PHP 5.4:
  1. (new AwesomeFactory('awesomeuser'))->methodOne()->methodTwo();


Ten post edytował pamil 25.08.2012, 10:28:10
Go to the top of the page
+Quote Post
lukaskolista
post
Post #4





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Nie ma metody factory i tyle, reszta jest taka sama. Wiec co tu wychwalac? Zadna rewolucja.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 17:16