Jakie wzorce projektowe są używane w Spring Framework?
design-patterns
spring
Tony
źródło
źródło
Odpowiedzi:
Istnieje wiele różnych wzorców projektowych, ale jest kilka oczywistych:
Proxy - używane intensywnie w AOP i zdalnych .
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.
źródło
Foo
a ty pobierasz instancję dlaFoo
każdego kontekstu, otrzymasz dwa różne odwołania do obiektów. Zamiast tego zastosowany wzorzec projektowy to wagaI oczywiście wstrzykiwanie zależności lub IoC (odwrócenie kontroli), które jest kluczowe dla całej rzeczy BeanFactory / ApplicationContext.
źródło
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.
źródło
Wiosna to zbiór wzorców API sprawdzonych w praktyce, listę zakupów możesz spisać tak długo, jak masz ramię. Sposób, w jaki zaprojektowano interfejs API, zachęca Cię (ale nie zmusza) do podążania za tymi wzorcami, a przez połowę czasu podążasz za nimi bez wiedzy, że to robisz.
źródło
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.
źródło
Observer-Observable: jest używany w mechanizmie zdarzeń ApplicationContext
źródło
Wzorzec Factory jest również używany do ładowania fasoli za pośrednictwem BeanFactory i kontekstu aplikacji.
źródło
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.
źródło
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.
źródło