[PYTHON] Singleton-Musterzusammenfassung der Einführung in Entwurfsmuster, die in Java gelernt wurden

Lange nicht gesehen. Es ist weiß. Neulich kennen leitende Ingenieure das Entwurfsmuster nicht! ?? Danach erhielt ich eine "Einführung in Designmuster, die in Java gelernt wurden", geschrieben von Hiroshi Yuki, und entschied mich zu studieren. Selbst wenn ich das Buch lese, kann ich mich nicht daran erinnern, deshalb habe ich beschlossen, es als Memorandum zu schreiben. Dies ist das 5. Mal. Ich werde mein Bestes geben, damit ich das Rennen beenden kann. Darüber hinaus gibt es ein Beispielprogramm in "Einführung in in Java-Sprache erlernte Entwurfsmuster", das wir jedoch aus urheberrechtlichen Gründen weglassen werden. Bitte verstehe.

Letztes Mal habe ich einen Artikel über "Factory Method Pattern" geschrieben. Der vorherige Artikel ist unten. https://qiita.com/sirajirasajiki/items/3a779d3529fbc14af801

Dieses Mal möchte ich das "Singleton-Muster" beschreiben. Es gibt auch ein Beispielprogramm für das "Singleton-Muster", das wir jedoch aus urheberrechtlichen Gründen weglassen werden. Bitte verstehe.

Kapitel 5 Nur eine Singleton-Musterinstanz

"Einführung in in Java gelernte Entwurfsmuster"

Das Muster, das garantiert, dass es nur eine Instanz gibt, wird als Singleton-Muster bezeichnet.

Es gab eine Beschreibung.

Angenommen, Sie haben ein Programm, das mehrere Arten von Operationen an Ihrem Programm ausführt. Für jede Operation wird das Operationsergebnis für die nächste Operation verwendet. Angenommen, Sie haben eine Berechnungsverwaltungsklasse, die die Ergebnisse dieser Vorgänge sofort verwaltet. Wenn zu diesem Zeitpunkt mehrere arithmetische Klassen erstellt werden können, ändert sich das arithmetische Ergebnis für jede Instanz. Daher können Sie das ursprünglich gewünschte Berechnungsergebnis erhalten, indem Sie eine Instanz erstellen. Auf diese Weise wird es verwendet, wenn Sie nur eine Instanz verwenden möchten, die eine bestimmte Klasse programmgesteuert erbt.

Ein häufiges Beispiel ist die Klasse von Parametern, die die Maschine steuern. Wenn sich beispielsweise mehrere Instanzen im selben Gerät befinden, die Parameter wie Maschinentemperatur und Maschinenbetriebsstatus verwalten, weiß das Gerät nicht, auf welche Instanz Bezug genommen werden soll, oder? Außerdem sind die Parameter für jede Instanz unterschiedlich und Sie wissen möglicherweise nicht, welche richtig ist, oder? Verwenden Sie dieses Singleton-Muster zu solchen Zeiten.

Beispiel mit Singleton

Dieses Mal möchte ich die Situation betrachten, in der das Score-Management von Mahjong nach dem Singleton-Muster durchgeführt wird. Wenn Sie die Instanz jedes Mal im selben Mahjong-Spiel neu erstellen, ist das Endergebnis der Partitur seltsam, daher verwenden wir das Singleton-Muster. In einer Klasse namens Mahjong werden Punkte und Instanzen von privaten Variablen verwaltet. Außerdem wird davon ausgegangen, dass die Methoden zum Erfassen von Mahjong-Instanzen, zum Erfassen von Punkten und zum Berechnen von Punkten verwaltet werden.

Klassen Diagramm

singleton.png

Dieses Klassendiagramm wird als PlantUML bezeichnet. Der PlantUML-Code, den ich geschrieben habe, befindet sich auf dem GitHub unten. Lesen Sie daher bitte Read Me, bevor Sie ihn verwenden. Es ist singleton.txt. https://github.com/sirajirasajiki/design_pattern_uml/tree/master/singleton Einzelheiten zur Installation und Verwendung von PlantUML finden Sie im Anhang unten.

In Python basierend auf dem Klassendiagramm implementiert

Der unten implementierte Code ist verfügbar. Implementiert in Python 3.7. https://github.com/sirajirasajiki/design_pattern_python/tree/master/Singleton

Vorsichtsmaßnahmen bei Verwendung des Singleton-Musters

--Halten Sie den Konstruktor privat.

Zusammenfassung

Sie haben das Singleton-Muster kennengelernt, mit dem Sie nur eine Instanz programmgesteuert erstellen können.

Kapitel 5 Impressionen

Bei Verwendung des Singleton-Musters wurde festgestellt, dass beim Erstellen mehrerer Instanzen auch Klassen, bei denen sich die Instanzen gegenseitig stören und das Verhalten des Programms beeinflussen, mit Sicherheit verwendet werden können. ~~ Das in der Erklärung verwendete Beispiel wird zu einem späteren Zeitpunkt in Python implementiert. ~~ In Python implementiert.

Schließlich

Wenn etwas nicht stimmt, wäre ich Ihnen dankbar, wenn Sie darauf hinweisen könnten!

appendix

Nächster Artikel

https://qiita.com/sirajirasajiki/items/02bde7075f8edd3570f1

Artikel, auf die während der Python-Implementierung verwiesen wird

https://qiita.com/ttsubo/items/c4af71ceba15b5b213f8

Geschichte verändern

Recommended Posts

Singleton-Musterzusammenfassung der Einführung in Entwurfsmuster, die in Java gelernt wurden
Zusammenfassung von Kapitel 2 der Einführung in Entwurfsmuster, die in Java gelernt wurden
Kapitel 4 Zusammenfassung der Einführung in Entwurfsmuster, die in Java gelernt wurden
Zusammenfassung von Kapitel 3 der Einführung in Entwurfsmuster, die in Java gelernt wurden
Zusammenfassung von Anfang bis Kapitel 1 der Einführung in Entwurfsmuster, die in der Java-Sprache gelernt wurden
[Von Zeit zu Zeit aktualisiert] Zusammenfassung der Entwurfsmuster in Java
Mit Java & PHP erlernte Entwurfsmuster (Zusammenfassung)
Singleton-Muster in Java
Entwurfsmuster in Python: Einführung
Zusammenfassung verschiedener Operationen in Tensorflow
Muster der Verantwortungskette in Java
Grobe Zusammenfassung des GoF-Java-Entwurfsmusters
Zusammenfassung der Mehrprozessverarbeitung der Skriptsprache
[Viererbande] Design Pattern Learning - Singleton
Zusammenfassung der häufig verwendeten Befehle in matplotlib
Zusammenfassung verschiedener for-Anweisungen in Python
Zusammenfassung der Hosting-Seiten der Bibliothek nach Sprache
Gang of Four (GoF) -Muster in Python
Zusammenfassung der Stolpersteine bei der Installation von CaboCha
Trennung von Design und Daten in matplotlib
Zusammenfassung der Module und Klassen in Python-TensorFlow2-
Zusammenfassung der integrierten Methoden usw. der Python-Liste