Was Design Patterns sind meist im Bereich Web - /Enterprise-Anwendungen?
Was sind einige der gängigsten Design Patterns in Web - /Enterprise-Anwendung und warum werden Sie verwendet ?
Hinweis: Antwort auf warum Teil soll auf die Auflistung der Probleme, die Sie neigen dazu, Sie zu lösen ?
InformationsquelleAutor der Frage Rachel | 2010-01-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutze ich Inversion of Control viel.
Insbesondere bei persistierenden /be-Objekte. Es hilft, wenn wir nicht sicher sind, ob die Daten kommen aus einer Datenbank, einem Webdienst oder einem anderen Mechanismus.
Über ein interface und mehrere Quellen verfügbar machen eine einfache API für das speichern /abrufen und damit das Objekt selbst zu wissen, welche API-Aufrufe zu machen, die wir am Ende mit einem sehr einfach zu verwalten Architektur.
Ein Beispiel HIERFÜR ist hier.
InformationsquelleAutor der Antwort NotMe
Den Singleton-Muster ist sehr Häufig. Es ist primäre Verwendung ist, um sicherzustellen, dass Sie nie instanziieren mehr als ein einzelnes Objekt von einem bestimmten Typ, das macht es ein netter Ersatz für Globale Variablen, die einen ausgesprochen schlechten Ruf. Es gibt unterschiedliche Grade der Argumente für und gegen die Singleton, mit einigen Menschen, die behaupten, dass es genauso schlimm wie Globale Variablen.
Ich Neige dazu, verwenden Sie es mich mit einem breiten Gruppe von Objekten, die ich in der Regel rufen Sie "Manager". Zum Beispiel, in einer großen Anwendung, die erfordert, dass mehrere Datenbanken, die Sie nicht wollen, zu öffnen, eine Menge von verbindungen, die alle die Zeit. Ich habe ein
DatabaseManager
Klasse, die ein Singleton ist, und es wird intern bei der Verwaltung von verbindungen zu einzelnen Datenbanken. Ein verzehrendes Objekt kann über einDatabaseManager::getConnection()
Methode, und es ist der manager-job, um sicherzustellen, eine einzige Verbindung vorhanden ist (öffnen Sie es, wenn es muss) und schicken Sie es an das verbrauchende Objekt.Dies löst das problem der Weitergabe um eine Globale Datenbank, die Verbindung alle über dem Platz, mit dem Nebeneffekt, dass effiziente Objekt verwenden, als nur ein DatabaseManager ist, die es jemals in Existenz. Statische Aufrufe bedeutet, dass es verfügbar ist, um alle Verbraucher, die es braucht.
InformationsquelleAutor der Antwort zombat
MVC
Model-View-Controller ermöglicht eine geringe zusammenhalt zwischen business-Logik und Präsentationsschicht und dies ist seine primäre Wert.
In der Regel jeder Controller ist eine
Servlet
behandelt, GET/POST-requests für eine Seite, reagiert, um Sie durch die Vorlage einer korrekten Sicht oder die übertragung der Zuständigkeit an einen anderen Controller.Viwer stellt Daten, die der Controller übergibt, in Html, Xml, JavaScript, JSON oder was auch immer Technik, die Sie möchten. Viewer ist in den meisten Fällen eine
Servlet
oder ein Servlet Abstraktion wie JSP, ASP, etc.Modell ist die domain-spezifische Darstellung der Daten, auf denen die Anwendung operiert. Es kann auch gekoppelt werden mit der domain-Logik, die die Sinne bietet, um Daten (wie die Berechnung Geburtstags -, Summen-oder Versandkosten zum Warenkorb-shopping-Elemente).
Modell sollte Kapseln die Daten, die Sie bequem egal die zugrunde liegenden Speicher-Einrichtungen.
Aufgrund seiner geringen zusammenhalt mit MVC können Sie ändern, entwickeln, und testen Sie jede Komponente unabhängig.
ActiveRecord
Dieser ist Häufig verwendet, wenn die zugrunde liegenden Speichermechanismus ist eine Datenbank. Im Grunde, was ActiveRecord bedeutet, dass alle Ihre Objekt-Eigenschaften entsprechen den Spalten in der zugrundeliegenden Datenbank und die, die jedes Objekt enthält Funktionen wie Einfügen, Aktualisieren, Löschen und zu Laden.
Also jede Klasse wird übersetzt in eine Tabelle oder eine Ansicht und jedes Objekt wird eine Zeile in der besagten Tabelle.
Der Grund dafür ist einfach, dass sich Ihre Klassen implementieren die Möglichkeit, Zugriff auf und Bearbeiten Sie die Datenbank, die Sie verschont, schreiben die extra boiler plate code. Das gepaart mit der Popularität von Datenbanken ist genug, um dieses Muster interessant.
Pools
Anderen Häufig genutzt wird, ist Pools.
PoolManager
ist ein Singletonverwaltet dieResource
(Datenbank -, Fabrik-Methode, oder eine Verbindung). PoolManager hält eine Reihe von initialisiert kopiert.Wenn ein anderer Prozess oder ein Objekt, fragt nach Ressourcen über
PoolManager.acquire()
bekommt er eines der Objekte aus einem pool.Er manipuliert seine Kopie der Ressource und gibt es zurück, wenn er fertig ist über
Resource.release()
. Das Objekt wird nicht zerstört, es ist jedoch lediglich an den pool zurückgegeben.Pools
werden verwendet, um die Leistung zu erhöhen.Zum Beispiel, wenn es ist eine factory Methode, die eine kostspielige retrieval (d.h. es ist langsam zu reagieren) es wird oft eingewickelt in eine
PoolManager
und N Instanzen erstellt werden, bei der Initialisierung vonPoolManager
. So Kunden nicht das Gefühl, dass das zugrunde liegende Werk wird sich verlangsamen, daPoolManager
nimmt die Leistung Treffer für Sie.InformationsquelleAutor der Antwort Daniel Fath
Ich denke Fassade & Adapter Muster werden Häufig von Entwicklern, aber Sie wissen nicht, dass Sie es tatsächlich tun.
InformationsquelleAutor der Antwort iChaib
Eines der am häufigsten verwendeten Enterprise-design-pattern ist Front Controller. Es erfordert zentralisiertes access point oder Einstiegspunkt. Verwendet, die vom J2EE-frameworks wie struts, jersey etc, so dass die Entwickler könnten es nicht bemerkt.
InformationsquelleAutor der Antwort rai.skumar
Model-View-Controller, zum trennen der Geschäftslogik von der Präsentationsschicht zur Reduzierung unnötiger enge Kopplung.
Sehen Sie mehr auf c2.com oder wikipedia
InformationsquelleAutor der Antwort crowne
Factory Pattern, meist factory_object und factory_method sind sehr Häufig,
z.B. DocumentFactory für xml-Dokumente.
Der Zweck des Fabrik-Musters ist die Vereinfachung der Objekt-Erstellung.
InformationsquelleAutor der Antwort crowne
Ich weiß nicht, wo zu beginnen, da findest du überall Muster (schließlich, unter der Haube). Aber lassen Sie uns versuchen:
Session
Toplink istUnitOfWork
JDO istPersistenceManager
in der Java-Welt).InformationsquelleAutor der Antwort Pascal Thivent
Ich fand dies nützlich: http://misko.hevery.com/code-reviewers-guide/
es geht nicht um die Frage, die Sie Fragen, aber es werden einige design patterns, die oben aufgeführten. Ich empfehle zum Lesen der pdf-Buch!
Hoffe, dass dies helfen
InformationsquelleAutor der Antwort Plamen Paskov