Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wzorzec projektowy fabryka (Factory)
Forum PHP.pl > Forum > PHP > Object-oriented programming
gcdreak
Witam!
Próuje zrozumieć wzorzec projektory fabryka. Mam w związku z tym pytanie. Przygotowałem specjalny diagram na podstawie którego będę bazować.
Jak połączyć na diagramie klasy LayoutMorning, LayoutAfternoon, LayoutNight z clasą LayoutFactory?
Jeśli ktoś by mógł go dokończyć i powiedzieć kilka słów dlaczego właśnie tak, to było by świetnie.
Crozin
W tym przypadku nie potrzeba Ci osobnej klasy LayoutFactory - metoda fabryka mogłaby z powodzeniem znaleźć się bezpośrednio w Layout.
  1. public static function getLayout($hour) {
  2. if ($hour > 6 && $hour < 14) {
  3. return new LayoutMorning();
  4. } else if ($hour >= 14 && $hour <= 18) {
  5. return new LayoutAfternoon();
  6. } else {
  7. return new LayoutNight();
  8. }
  9. }
  10.  
  11. //...
  12.  
  13. $layout = Layout::getLayout(date('H'));
gcdreak
Masz rację, zrobiłem nie duży szkic. Wyobraźcie sobie, że w potomkach akstrakcyjnej klasy Layout jest więcej method. ponadto chcę zobaczyć i zrozumieć jak ten wzorzec by się prezentował w tej kontretnej sytuacji.
Cysiaczek
Nie rozumiem twojego drugiego postu. ~Crozin podał Ci poprawną implementację wzorca (choć obiekty mogłyby być powoływane dynamiczne, na podstawie nazwy a ta z kolei, na podstawie konfiguracji).
gcdreak
Tak, mogę to co podał @Crozin wrzucić do osobnej klasy i będzie pełna implementacja fabryki. Jak to jednak mogę przedstawić w UML-u na tym moim diagramie?
Cysiaczek
Narysuj połączenie (przerywaną kreską) między LayoutFactory i abstrakcyjną klasą Layout i daj do tego polączenia komentarz "Produkuje"/"Wytwarza".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.