Ich lerne GoF Java Design Patterns und möchte einige Beispiele aus dem wirklichen Leben sehen. Was sind einige gute Beispiele für diese Entwurfsmuster in den Kernbibliotheken von Java?
java
oop
design-patterns
java-api
unj2
quelle
quelle
javax.lang.model.element
definiert Besucher;) Ich bin mir nicht ganz sicher, obdoXXX
unddoFilter
sind "Strategien".Observable
,Observer
)ContainerAdapter
,ComponentAdapter
,FocusAdapter
,KeyAdapter
,MouseAdapter
ist nicht Adapter; Sie sind eigentlich Null-Objekte. Schlechte Namenswahl von Sun.BufferedInputStream
können andere Ströme dekorieren wieFilterInputStream
)java.lang.Runtime#getRuntime()
ist SingletonButtonGroup
für Mediator-MusterAction
,AbstractAction
kann für verschiedene visuelle Darstellungen verwendet werden, um denselben Code auszuführen -> Befehlsmusterund viele mehr, denke ich
quelle
clone()
Methode für diesen Zweck verwendet werden kann.quelle
java.awt
als auchjava.swing
Pakete befinden. In der Tat haben sie fast identische intrinsische Attribute und extrinsische Attribute sind verschiedene UI-Komponenten, die sie in UI-Form anordnen.RMI basiert auf Proxy.
Sollte möglich sein, eines für die meisten der 23 Muster in GoF zu zitieren:
Ich kann mir keine Beispiele in Java für 10 von 23 vorstellen, aber ich werde sehen, ob ich es morgen besser machen kann. Dafür ist Bearbeiten da.
quelle
Das Abstract Factory-Muster wird an verschiedenen Stellen verwendet. Zum Beispiel
DatagramSocketImplFactory
,PreferencesFactory
. Es gibt noch viele weitere --- Durchsuchen Sie das Javadoc nach Schnittstellen, deren Name das Wort "Factory" enthält.Es gibt auch einige Beispiele für das Factory-Muster.
quelle
Obwohl ich mit dieser Uhr eine Art kaputte Uhr bin, verwendet die Java XML-API häufig Factory. Ich meine, schau dir das an:
...und so weiter und so fort.
Zusätzlich verwenden verschiedene Puffer (StringBuffer, ByteBuffer, StringBuilder) Builder.
quelle
java.util.Collection # Iterator ist ein gutes Beispiel für eine Factory-Methode. Abhängig von der konkreten Unterklasse der Sammlung, die Sie verwenden, wird eine Iterator-Implementierung erstellt. Da sowohl die Factory-Superklasse (Sammlung) als auch der erstellte Iterator Schnittstellen sind, wird sie manchmal mit AbstractFactory verwechselt. Die meisten Beispiele für AbstractFactory in der akzeptierten Antwort (BalusC) sind Beispiele für Factory , eine vereinfachte Version der Factory-Methode, die nicht Teil der ursprünglichen GoF-Muster ist. In Facory wird die Factory-Klassenhierarchie reduziert und die Factory verwendet andere Mittel, um das zurückzugebende Produkt auszuwählen.
Eine abstrakte Fabrik verfügt über mehrere Fabrikmethoden, die jeweils ein anderes Produkt erstellen. Die von einer Fabrik hergestellten Produkte sollen zusammen verwendet werden (Ihr Drucker und Ihre Patronen stammen besser aus derselben (abstrakten) Fabrik). Wie in den obigen Antworten erwähnt, sind die von Plattform zu Plattform unterschiedlichen Familien von AWT-GUI-Komponenten ein Beispiel dafür (obwohl sich ihre Implementierung von der in Gof beschriebenen Struktur unterscheidet).
quelle