Jakie wzorce projektowe są używane w Spring Framework?
Odpowiedzi:
Istnieje wiele różnych wzorców projektowych, ale jest kilka oczywistych:
Singleton - ziarna zdefiniowane w plikach konfiguracyjnych spring są domyślnie singletonami.
Metoda szablonowa - używana szeroko w przypadku powtarzającego się kodu standardowego (np. Czyste zamykanie połączeń itp.). Na przykład JdbcTemplate , JmsTemplate , JpaTemplate .
Zaktualizuj następujące komentarze: W przypadku MVC warto przeczytać dokumentację MVC
Kilka oczywistych wzorców używanych w MVC:
Kontroler widoku modelu :-). Zaletą Spring MVC jest to, że kontrolery są POJO, a nie serwletami. Ułatwia to testowanie kontrolerów. Należy zauważyć, że kontroler jest wymagany tylko do zwrócenia logicznej nazwy widoku, a wybór widoku jest pozostawiony osobnemu ViewResolver . Ułatwia to ponowne wykorzystanie kontrolerów do różnych technologii widoku.
Kontroler przedni . Spring udostępnia DispatcherServlet, aby zapewnić wysyłanie przychodzących żądań do kontrolerów.
View Helper - Spring ma wiele niestandardowych znaczników JSP i makr prędkości, które pomagają w oddzielaniu kodu od prezentacji w widokach.
Fooa ty pobierasz instancję dla Fookażdego kontekstu, otrzymasz dwa różne odwołania do obiektów. Zamiast tego zastosowany wzorzec projektowy to waga
Rzecz w DI to właściwie jakiś wzorzec strategii. Ilekroć chcesz, aby jakaś logika / implementacja była wymienna, zazwyczaj znajdujesz interfejs i odpowiednią metodę ustawiającą w klasie hosta, aby połączyć niestandardową implementację tego interfejsu.
Wzorzec lokalizatora usług - ServiceLocatorFactoryBean przechowuje informacje o wszystkich komponentach bean w kontekście. Gdy kod klienta prosi o usługę (komponent bean) przy użyciu nazwy, po prostu lokalizuje ten komponent w kontekście i zwraca go. Kod klienta nie musi pisać kodu związanego ze sprężyną, aby zlokalizować ziarno.
Wzorzec metody fabryki: BeanFactory do tworzenia instancji obiektu Singleton: typ instancji może być singletonem dla kontekstu Prototype: typ instancji może być prototypem. Wzorzec konstruktora: możesz także zdefiniować metodę w klasie, która będzie odpowiedzialna za tworzenie złożonej instancji.
Pojemnik sprężynowy generuje obiekty fasoli w zależności od zakresu fasoli (singleton, prototyp itp.). To wygląda na implementację wzorca Abstract Factory . Jestem pewien, że w wewnętrznej implementacji Springa każdy zakres powinien być powiązany z określoną klasą rodzaju fabryki.