Quali modelli di design vengono utilizzati nel framework Spring?
Risposte:
Ci sono un sacco di diversi modelli di design utilizzati, ma ce ne sono alcuni ovvi:
Singleton: i bean definiti nei file di configurazione primaverili sono singleton per impostazione predefinita.
Metodo modello: utilizzato ampiamente per gestire il codice ripetuto boilerplate (come chiudere le connessioni in modo pulito, ecc.). Ad esempio JdbcTemplate , JmsTemplate , JpaTemplate .
Aggiornare i seguenti commenti: per MVC, potrebbe essere necessario leggere il riferimento MVC
Alcuni schemi evidenti in uso in MVC:
Model View Controller :-). Il vantaggio di Spring MVC è che i controller sono POJO anziché servlet. Ciò semplifica il test dei controller. Una cosa da notare è che al controller è richiesto solo di restituire un nome di visualizzazione logica e la selezione della visualizzazione viene lasciata a un ViewResolver separato . Ciò semplifica il riutilizzo dei controller per diverse tecnologie di visualizzazione.
Controller frontale . Spring fornisce DispatcherServlet per garantire che una richiesta in arrivo venga inviata ai controller.
View Helper : Spring ha una serie di tag JSP personalizzati e macro di velocità, per aiutare a separare il codice dalla presentazione nelle viste.
Foo
e tu recuperi l'istanza di Foo
per contesto, otterrai due diversi riferimenti a oggetti. Invece, il modello di design applicato qui è il peso mosca
La cosa DI in realtà è una sorta di modello strategico. Ogni volta che si desidera cambiare logica / implementazione, in genere si trova un'interfaccia e un metodo setter appropriato sulla classe host per collegare la propria implementazione personalizzata di tale interfaccia.
Pattern di localizzazione del servizio: ServiceLocatorFactoryBean conserva le informazioni di tutti i bean nel contesto. Quando il codice client richiede un servizio (bean) utilizzando name, individua semplicemente quel bean nel contesto e lo restituisce. Il codice client non ha bisogno di scrivere codice relativo alla primavera per individuare un bean.
Schema del metodo Factory: BeanFactory per la creazione di istanze di un oggetto Singleton: il tipo di istanza può essere singleton per un contesto Prototipo: il tipo di istanza può essere prototipo. Pattern builder: puoi anche definire un metodo in una classe che sarà responsabile della creazione di istanze complesse.
Il contenitore Spring genera oggetti bean a seconda dell'ambito del bean (singleton, prototipo ecc ..). Quindi questo sembra implementare il pattern Abstract Factory . Nell'implementazione interna di Spring, sono sicuro che ogni ambito dovrebbe essere legato a una specifica classe di fabbrica.