Welche Entwurfsmuster werden im Spring Framework verwendet?
design-patterns
spring
Tony
quelle
quelle
Antworten:
Es werden viele verschiedene Entwurfsmuster verwendet, aber es gibt einige offensichtliche:
Proxy - wird häufig in AOP und Remoting verwendet .
In Spring-Konfigurationsdateien definierte Singleton-Beans sind standardmäßig Singletons.
Vorlagenmethode - wird häufig verwendet, um mit wiederholtem Code auf der Kesselplatte umzugehen (z. B. sauberes Schließen von Verbindungen usw.). Zum Beispiel JdbcTemplate , JmsTemplate , JpaTemplate .
Aktualisieren Sie die folgenden Kommentare: Für MVC möchten Sie möglicherweise die MVC-Referenz lesen
Einige offensichtliche Muster, die in MVC verwendet werden:
Model View Controller :-). Der Vorteil von Spring MVC besteht darin, dass Ihre Controller POJOs und keine Servlets sind. Dies erleichtert das Testen von Steuerungen. Zu beachten ist, dass der Controller nur einen logischen Ansichtsnamen zurückgeben muss und die Ansichtsauswahl einem separaten ViewResolver überlassen bleibt . Dies erleichtert die Wiederverwendung von Controllern für verschiedene Ansichtstechnologien.
Front Controller . Spring bietet DispatcherServlet, um sicherzustellen, dass eine eingehende Anforderung an Ihre Controller gesendet wird.
View Helper - Spring verfügt über eine Reihe von benutzerdefinierten JSP-Tags und Geschwindigkeitsmakros, mit denen Sie Code von der Darstellung in Ansichten trennen können.
quelle
Foo
und Sie rufen die Instanz vonFoo
pro Kontext ab. Sie erhalten zwei verschiedene Objektreferenzen. Stattdessen ist das hier angewandte Designmuster FliegengewichtUnd natürlich die Abhängigkeitsinjektion oder IoC (Inversion of Control), die für das gesamte BeanFactory / ApplicationContext-Material von zentraler Bedeutung ist.
quelle
Die DI-Sache ist eigentlich eine Art Strategiemuster. Wann immer Sie eine Logik / Implementierung austauschbar sein möchten, finden Sie normalerweise eine Schnittstelle und eine geeignete Setter-Methode für die Host-Klasse, um Ihre benutzerdefinierte Implementierung dieser Schnittstelle zu verkabeln.
quelle
Spring ist eine Sammlung von Best-Practice-API-Mustern, von denen Sie eine Einkaufsliste erstellen können, solange Ihr Arm reicht. Die Art und Weise, wie die API entworfen wurde, ermutigt Sie (aber zwingt Sie nicht), diesen Mustern zu folgen, und die Hälfte der Zeit, in der Sie ihnen folgen, ohne zu wissen, dass Sie dies tun.
quelle
Service Locator Pattern - ServiceLocatorFactoryBean speichert Informationen zu allen Beans im Kontext. Wenn der Clientcode nach einem Dienst (Bean) mit Namen fragt, findet er diese Bean einfach im Kontext und gibt sie zurück. Der Client-Code muss keinen federbezogenen Code schreiben, um eine Bean zu finden.
quelle
Observer-Observable: Wird im Ereignismechanismus von ApplicationContext verwendet
quelle
Das Factory-Muster wird auch zum Laden von Beans über den BeanFactory- und Anwendungskontext verwendet.
quelle
Factory Method patter: BeanFactory zum Erstellen einer Instanz eines Objekts Singleton: Instanztyp kann Singleton für einen Kontext sein Prototyp: Instanztyp kann Prototyp sein. Builder-Muster: Sie können auch eine Methode in einer Klasse definieren, die für die Erstellung komplexer Instanzen verantwortlich ist.
quelle
Der Spring-Container generiert je nach Bean-Bereich (Singleton, Prototyp usw.) Bean-Objekte. Das sieht also so aus, als würde man das Abstract Factory-Muster implementieren . Ich bin sicher, dass bei der internen Implementierung des Frühlings jeder Bereich an eine bestimmte Fabrikklassenklasse gebunden sein sollte.
quelle