![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wzorzec fabryki umozliwia lancuchowanie, np.
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 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:16 |