Refaktoryzuję aplikację PHP i staram się mieć jak najwięcej zastrzyku zależności (DI).
Czuję, że dobrze rozumiem, jak to działa, i z pewnością widzę, że moje zajęcia stają się o wiele szczuplejsze i bardziej solidne.
Refaktoryzuję, aby móc wstrzykiwać zależność, zamiast tworzyć nowy obiekt w klasie, ale w pewnym momencie będę musiał utworzyć niektóre obiekty, to znaczy użyć przerażającego new
słowa kluczowego.
Problem, na który teraz natrafiłem, polega na tym, w którym momencie mogę rzeczywiście tworzyć nowe obiekty? Wygląda na to, że skończę w klasie najwyższego poziomu, tworząc mnóstwo nowych obiektów, ponieważ nie ma dokąd pójść. To źle.
Przeczytałem kilka blogów, które używają klas fabrycznych do tworzenia wszystkich obiektów, a następnie wstrzykujesz fabrykę do innych klas. Następnie możesz wywołać metody fabryczne, a fabryka utworzy dla ciebie nowy obiekt.
Moje obawy związane z robieniem tego są teraz, że moje zajęcia fabryczne będą new
darmowe dla wszystkich! Wydaje mi się, że może to być OK, ponieważ są to klasy fabryczne, ale czy są jakieś zasady, których należy przestrzegać, używając wzorca fabrycznego i DI, czy też odchodzę od tego znaku?
new
. Oczywiście istnieje kilka punktów wejścia, w których musisz zadzwonić do kontenera IoC, ale nie powinno ich być wiele. Zazwyczaj konfigurujesz IoC raz, a następnie poprosisz o rozwiązanie jednej klasy na żądanie. W przypadku MVC jest to zazwyczaj kontroler.