Factory Method, czy warto?

0

Hej,
Mam pytanie, ostatnio napisałem sobie programik który składał się z 3 klas robiących bardzo podobne rzeczy, z jednakową metodą odziedziczoną po interfejsie. Postanowiłem, ze poczytam sobie o wzorcach projektowych bo niby moj program jest obiektowy ale nie do konca podobal mi się pod względem stylu. Zdecydowalem, ze przyda mi się w moim przypadku fabryka i teraz pojawia się pytanie, czy tworzenie factory method w taki sposób jak jest to opisane w tym artykule https://www.p-programowanie.pl/wzorce-projektowe/fabryka-abstrakcyjna/ jest dobrą praktyką? Chodzi konkretnie o przykład factory method. Z góry sorki jeśli nie można tutaj wrzucać linków, niech ktoś napisze jeśli tak jest i usunę. Wracając do pytania, chodzi o sposób w jaki jest to tworzone,
czy zamiast 3 klas i jednego interfejsu zrobienie 1 interfejsu, 1 klasy abstrakcyjnej, 3 fabryk i 3 klas ma sens? Podoba mi się to ale zastanawiam się czy to nie jest za bardzo rozdmuchany kod

2

Mniej kodu zawsze wygląda lepiej od więcej kodu który nic nie wnosi. Więc jeśli nie masz problemu który dany wzorzec rozwiązuje, to naprawdę nie warto na zapas na siłę pchać wzorców.

0

A wypowie się ktoś na temat różnicy tej febryki LINK 1
i tej LINK 2
chodzi o konkretna klase ktora zwraca instancje obiektow, czy lepiej jak są porozdzielane dla kazdej klasy oddzielna fabryka,
czy moze byc tak ze jedna w zaleznosci od czegos tak jak tutaj od stringa

0

Próbowałem napisać ogólną odpowiedź, ale to nie jest łatwe, bo to tak naprawdę wszystko zależy od kontekstu i tego jaki problem chcesz rozwiązać, więc najpopularniejsze przypadki jakie przychodzą mi do głowy:

  1. wprowadzić punkt rozszerzenia umożliwiający podmianę całej grupy konkretnych klas -> fabryka abstrakcyjna
  2. lub ułatwić tworzenie klas które tworzy się w podobny sposób, często skomplikowany -> fabryka
  3. wprowadzić klasę która będzie tworzyła obiekt złożonej klasy -> budowniczy
  4. wprowadzić punkt rozszerzenia umożliwiający podmianę tworzenia obiektu wewnątrz jakiejś innej klasy za pomocą dziedziczenia -> metoda rozszerzająca/fabrykująca
  5. wprowadzić punkt rozszerzenia umożliwiający podmianę tworzenia obiektu wewnątrz jakiejś innej klasy za pomocą dependency injection -> w c# to się zwykle wstrzykuje delegaty, ale w javie to właśnie zwykle będzie fabryka abstrakcyjna tworząca jeden obiekt
0

W takim razie jeśli chodzi o przeznaczenie to mam stworzony logger do 3 różnych miejsc i na początku wywoływałem go z palca a teraz mam tak że jest jedna klasa singleton i wywołuje metodę logujaca po stworzeniu loggerow z fabryki takiej jak w linku wyżej, gdzie każdy logger ma swoją klasę factory. Stąd właśnie było moje pytanie czy jeśli zamienię 3 fabryki na jedną ogólna jak w drugim linku to czy nie będzie to wbrew dobrym praktykom metody fabrykujacej. Jeśli chodzi o Simple factory lub abstract factory to wydaje mi się że bardziej odpowiada mi + bardziej rozumiem factory method, dlatego też to wykorzystałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1