[JAVA] Studieren Sie GoF-Entwurfsmuster

Einführung

[Einführung in in Java gelernte Entwurfsmuster](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89 % 88Java% E8% A8% 80% E8% AA% 9E% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% B6% E3% 82% A4 % E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3% E5% 85% A5% E9% 96% 80-% E7% B5% 90% Ich habe E5% 9F% 8E-% E6% B5% A9 / dp / 4797327030) gelesen, aber als ich es so las, wie es war, kam mir der Inhalt nicht in den Sinn, also war es ein Händchen für das Lernen oder Lernen. Ich habe versucht, einen Artikel über die zusammengefassten Ergebnisse zu schreiben.

Lerntipps

Liste zur Verwendung der 23 Entwurfsmuster von GoF in Java (mit zusammenfassenden Kommentaren für jedes Muster) ↑ Ich habe erheblich auf diese Seite verwiesen. Besonders nützlich sind die 4 Kategorien nach Level. Für mich, der sich gefragt hat: "Ich weiß nicht, wo ich anfangen soll" und "Sind Sie sicher, dass Sie dieses Muster verwenden möchten?", Hat mich die Priorität des Lernens viel besser gemacht. Hier ist eine Tabelle mit Lernprioritäten x Musterzielen.

Wenn Sie ein gutes Gespür für Programmierung haben, können Sie es natürlich verwenden, ohne es zu erfahren Der Name des Musters selbst ist berühmt und wird hier und da verwendet Es ist schwer, sich selbst etwas auszudenken, aber sobald Sie es gelernt haben, ist die Programmierung überraschend offen.
Generieren -Builder: Unterteiltes Initialisierungsverfahren -Fabrikmethode: Unterklasse dynamisch auswählen
・ Singleton: 1 Instanz garantiert
・ Abstrakte Fabrik: Fabrik der Fabrik
-Prototyp: Übergeben Sie eine Kopie
Konstruktion ・ Adapter: Vererbung/Wrapper durch Delegation
・ Dekorateur: Delegierter und absichtlicher Haken
・ Fassade: Verfahren zur Verwendung mehrerer Klassen
・ Proxy: Sneak Hook -Bridge: Hierarchische Trennung von Erweiterungen und Implementierungen
・Composite:再帰ツリーKonstruktion
・ Fliegengewicht: Fabrik mit Bargeld
Verhalten -Template-Methode: Das Kind verkörpert das Verarbeitungsfragment
・ Strategie: Algorithmusumschaltung
・ Mediator: Sternförmige Interaktion
-Observer: Ereignis-Listener
・ Iterator: Prozesse nebeneinander
-State: Statusobjekt
-Befehl: Task-Warteschlange und Stapel
・ Memento: State Getter und Setter
・ Dolmetscher: Ausführung der Originalsprache
・ Verantwortungskette: Helfen Sie beim Versand des Netzwerks
・ Besucher: Praktischer Strukturscanner

Ich habe das von der linken Seite aufgeräumt. Es war sehr leicht zu lernen, weil es ein Muster war, das mir schnell in den Sinn kam und mir irgendwo vertraut war → ein komplexes und unbekanntes Muster. Wenn Sie wissen, welchem der "Zwecke des Musters" es entspricht (Erzeugung / Struktur / Verhalten), ist dies auch gut, da Sie nicht den Überblick verlieren, was Sie gerade tun.

Zusammenfassung jedes Musters

・ Kurz gesagt, was für ein Muster ist das? ・ Wann wird dieses Muster verwendet? Was sind die Vorteile? Ich habe versucht, jedes Muster mit den beiden Achsen zusammenzufassen.

Wenn Sie ein gutes Gespür für Programmierung haben, können Sie es natürlich verwenden, ohne es zu erfahren

Einfach gesagt? Wann benutzt du es? Was sind die Vorteile?
Builder Trennung von Verarbeitungsablauf und spezifischer Verarbeitung Verbindung zwischen Anwendungsfallschicht und Infrastrukturschicht (Abhängigkeitsumkehr)
Adapter Wrapper-Klasse Antikorruptionsschicht
Decorator Funktionsanpassung durch Identifizierung von Kern- und Zusatzfunktionen Abhängig von der Kombination zusätzlicher Funktionen können unendliche Variationen erstellt werden
Facade API als Fenster bereitstellen Verschleierung der Verarbeitung
Template Method Erbe Verschleierung der Verarbeitung
Strategy Trennung von Algorithmen Sie können den Algorithmus wechseln
Mediator Zentrales Management der Zusammenarbeit in mehreren Klassen Interaktionen zwischen Klassen organisieren (Verkehrserhaltung)

Der Name des Musters selbst ist berühmt und wird hier und da verwendet

Einfach gesagt? Wann benutzt du es? Was sind die Vorteile?
Factory Method Definieren Sie Instanziierungs- und Verwendungsmethoden auf der Seite der abstrakten Klasse Trennung von Rahmen und Umsetzung
Singleton Garantie 1 Instanz Kann unter Berücksichtigung von Nebenwirkungen unter der Voraussetzung einer Instanz implementiert werden
Proxy Übernehmen Sie schwere Verarbeitung Sie werden in der Lage sein, Dinge wie faule Straße zu tun
Observer Änderungen des Klassenstatus benachrichtigen und verarbeiten Asynchrone Verarbeitung (Pub-Sub) wird in der Lage sein
Iterator Sequentielle Verarbeitung von Aggregatelementen Trennung der sequentiellen Verarbeitung/Stilisiert

Es ist schwer, sich selbst etwas auszudenken, aber sobald Sie es gelernt haben, ist die Programmierung überraschend offen.

Einfach gesagt? Wann benutzt du es? Was sind die Vorteile?
Bridge Hierarchische Trennung von Erweiterungen und Implementierungen Transfer/Sie können die Bedeutung der Vererbung für jede Ebene separat betrachten (grundlegende ↔︎-Erweiterung)./Abstract ↔︎ Implementierung)
Composite Retrospektive Baumstruktur durch Gleichsetzen von Container und Inhalt Realisierung der rekursiven Struktur (Baumstruktur)
State Drücken Sie den Status in einer Klasse aus und wechseln Sie (ändern Sie den Status) zur Verwendung Bedingte Verzweigung durch if-Anweisung oder switch-Anweisung wird unnötig
Command Drücken Sie die Anweisung als Objekt aus und führen Sie sie aus()Laufen zu können Flexible Verwaltung von Aufgaben mithilfe von Warteschlangen und Stapeln/Kann ausgeführt werden
Memento Status speichern und wiederherstellen Zugriff auf den Status (Erfassen), ohne die Kapselung zu unterbrechen/Kann aktualisiert werden)
Interpreter Analyse der Prototyp-Sprachsyntax Syntaxanalyse durch Ablegen der Originalsprache (definiert von BNF) in der Klasse/Tun können
Chain of Responsibility Erstellen Sie eine Prozessorkette Eine flexible Verarbeitung kann durch Umordnen der Kette ausgedrückt werden
Konzentrieren Sie sich auf Ihre Arbeit (machen Sie sich keine Sorgen darüber, wofür andere Elemente der Kette verantwortlich sind).
Visitor Arbeiten Sie, indem Sie über die Datenstruktur gehen Die Verarbeitung kann von der Datenstruktur getrennt werden

Dinge, die schwer zu verstehen und zu benutzen sind

Einfach gesagt? Wann benutzt du es? Was sind die Vorteile?
Abstract Factory Definieren Sie Methoden zum Instanziieren und Verwenden der gesamten Struktur auf der Seite der abstrakten Klasse Trennung von Rahmen und Umsetzung
Prototype Klonen Sie die registrierte Instanz()Kopieren und übergeben Instanziierung ausblenden und frei von Einschränkungen des Klassennamens (neue Klausel)
Flyweight Poolen Sie die einmal erstellte Instanz und verwenden Sie sie erneut Die Speichernutzung kann reduziert werden

abschließend

Das Studieren von Entwurfsmustern führt zu einer vollständigen Speicherung von 23 Mustern. Sie können jedoch ein gutes Lerntempo erzielen, indem Sie Blöcke nach Ebene oder Zweck erstellen. Da Entwurfsmuster die Grundlage jeder objektorientierten Programmierung sind, kann dasselbe Konzept in unterschiedlichen Praktiken in unterschiedlichen Begriffen auftreten (z. B. wird das Adaptermuster von DDD als Antikorruptionsschicht bezeichnet). Wird auftauchen). Wenn Sie in Bezug auf das, was Sie bereits wissen, studieren, können Sie es sich als eine Beziehung innerhalb eines großen Rahmens vorstellen, nicht nur als Auswendiglernen einzelner Angelegenheiten, sodass Sie es effizient und in einer Form etablieren können, die sich leicht als Wissen herausstellen lässt. Ich denke.

Recommended Posts

Studieren Sie GoF-Entwurfsmuster
Java-Entwurfsmuster
Einführung in Entwurfsmuster (Einführung)
Einführung in Entwurfsmuster (Builder)
Einführung in Entwurfsmuster (Composite)
Einführung in Designmuster (Fliegengewicht)
Warum Designmuster benötigt werden
[Java] Zusammenfassung der Entwurfsmuster
Einführung in Entwurfsmuster (Strategie)
Einführung in Design Patterns (Abstract Factory)
Wichtiges Entwurfsmuster zur Verbesserung der Wartbarkeit