Quali modelli di design vengono utilizzati nel framework Spring? [chiuso]


90

Quali modelli di design vengono utilizzati nel framework Spring?


Include più di 10 pattern tra cui ..MVC, Front controller, View Helper, Singleton, Prototype, Factory ecc. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Raúl

Risposte:


74

Ci sono un sacco di diversi modelli di design utilizzati, ma ce ne sono alcuni ovvi:

  • Proxy: molto utilizzato in AOP e remoting .

  • 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.


Grazie, quali sono i modelli di progettazione utilizzati nel modulo Spring MVC?
Tony

10
Non credo che la primavera implementi il ​​singleton per i fagioli. Si noti che un bean con ambito singleton avrà una singola istanza per contesto dell'applicazione . Quindi, se la tua applicazione ha due contesti Spring, caricano lo stesso bean singleton Fooe tu recuperi l'istanza di Fooper contesto, otterrai due diversi riferimenti a oggetti. Invece, il modello di design applicato qui è il peso mosca
Luiggi Mendoza

@Luiggi Mendoza intendi che la primavera non ha oggetti singleton? per favore spiegami con qualche chiarimento.
Kumaresan Perumal

1
@KumaresanPerumal c'è una differenza significativa tra il pattern Singleton e l'istanza singleton (nota la S maiuscola / minuscola). Il modello singleton riguarda il mantenimento di una singola istanza dell'oggetto attraverso l'intera applicazione. Ciò che Spring fa quando rileva un bean singleton è creare una singola istanza per contesto dell'applicazione . Il contesto dell'applicazione è il componente principale di Spring e serve a delegare la creazione e il recupero degli oggetti. Il bean singleton viene creato solo una volta per contesto dell'applicazione.
Luiggi Mendoza

I collegamenti per il controller di visualizzazione del modello, il controller anteriore e la visualizzazione hanno contribuito a oracle.com/technetwork/java/index.html . Potresti aggiornare la risposta con un link funzionante?
SpringLearner

12

E ovviamente l'iniezione di dipendenza, o IoC (inversione di controllo), che è centrale per l'intera roba di BeanFactory / ApplicationContext.


10

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.


Risposta dal Maestro stesso. @ Oliver potresti indicare più schemi qui?
Gaurav

6

Spring è una raccolta di modelli API di best practice, puoi scrivere una lista della spesa lunga quanto il tuo braccio. Il modo in cui è progettata l'API ti incoraggia (ma non ti obbliga) a seguire questi schemi e per metà del tempo li segui senza sapere che lo stai facendo.


3

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.


2

Observer-Observable: viene utilizzato nel meccanismo degli eventi di ApplicationContext


1

Il pattern Factory viene utilizzato anche per caricare i bean tramite BeanFactory e il contesto dell'applicazione.


1

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.


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.