[PYTHON] Kapitel 4 Zusammenfassung 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 4. 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 "Template Method Pattern" geschrieben. Der vorherige Artikel ist unten. https://qiita.com/sirajirasajiki/items/53e1d2aea166190f9a6f

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

Kapitel 4 Factory-Methode - Überlassen Sie die Instanzerstellung den Unterklassen

"Einführung in in Java gelernte Entwurfsmuster"

Factory-Methode ist einfach das Muster der Vorlagenmethode, das auf die Instanziierung angewendet wird.

Korrekt.

Ich denke, einige Leute können sich das nur schwer vorstellen, deshalb werde ich ein Beispiel geben. Stellen Sie sich eine Fabrik vor. In der Fabrik werden Produkte hergestellt. In großen Filialisten wie Shimamura und UNIQLO werden T-Shirts oft in Fabriken hergestellt, oder? Ich denke, dass die Größe grob für jede Größe festgelegt wird, wie diese für die S-Größe und diese für die M-Größe. Ich denke jedoch, dass die Materialien und Designs von Unternehmen zu Unternehmen unterschiedlich sind. Ich denke, dass die Fabrik auch andere PCs herstellt. Wenn es sich um einen PC handelt, beträgt der Speicher 16 GB und wird wie SSD oder HDD aufgeteilt. Auf diese Weise ist alles, was Sie in der Fabrik herstellen, ein Produkt, nicht wahr? Wenn es eine Superklasse ist, etwas in der Fabrik herzustellen, ist die T-Shirt-Fabrik eine Unterklasse. Sie können jedoch auch eine Unterklasse erstellen, die als Computerfabrik bezeichnet wird. Durch die Verwendung einer abstrahierten Klasse können Sie völlig unterschiedliche Unterklassen mit einem gemeinsamen Konzept erstellen.

Auf diese Weise entscheidet die Oberklassenseite, wie eine Instanz erstellt wird, und indem die spezifische Verarbeitung der Instanz überlassen wird, kann das Framework zum Erstellen der Instanz und zum Erstellen der Instanz separat betrachtet werden. Indem die spezifische Verarbeitung der Instanz überlassen wird, kann die Oberklasse eine Situation erzeugen, die nicht von der Instanz abhängt.

Vorsichtsmaßnahmen bei Verwendung der Factory-Methode

Mit dem "Factory Method Pattern" erstellte Unterklassen können entscheiden, wie Instanzen in Superklassen erstellt werden. Sie müssen also die Superklasse richtig verstehen.

Beispiel mit der Factory-Methode

Erstellen Sie ein Klassendiagramm und Python-Code anhand des Factory-Beispiels aus "Einführung in in der Java-Sprache erlernte Entwurfsmuster". Dieses Mal erstellen wir eine Factory-Klasse und eine Produktklasse sowie eine PC-Factory-Klasse und eine PC-Klasse, die jeweils erben. Die Factory-Klasse deklariert eine abstrakte Methode namens "createProduct", die das Produkt erstellt, und eine abstrakte Methode namens "registerProduct", die das erstellte Produkt registriert. Diese beiden abstrakten Klassen werden in Unterklassen implementiert. Darüber hinaus gibt es eine Methode, die den Ablauf des Erstellens eines Produkts mit "createProduct" mit dem Namen "create" implementiert und das Produkt mit "registerProduct" registriert. Die PC-Factory-Klasse erbt die Factory-Klasse, implementiert "registerProduct" und "createProduct" und erbt eine Methode namens "get_owners", die angibt, wer sie gekauft hat.

Die Produktklasse implementiert nur eine abstrakte Methode namens "use", die das erstellte Produkt verwendet. Die Personal Computer-Klasse erbt die Produktklasse, implementiert "use" und implementiert eine Methode zum Erstellen einer eigenen Instanz und eine "get_owner" -Methode, um zu ermitteln, an wen sie gesendet werden soll. Bei der tatsächlichen Implementierung sollte es möglich sein, das Ziel, die Unternehmens- oder Einzelperson, die Personalcomputerspezifikationen usw. zu erfassen oder zu registrieren. Diesmal handelt es sich jedoch um ein Beispiel mit der Factory-Methode, sodass wir dies nicht tun werden.

Klassen Diagramm

factory_method.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. factory_method.txt. https://github.com/sirajirasajiki/design_pattern_uml/tree/master/template_method 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/FactoryMethod

Zusammenfassung

Ich habe das "Factory Method Pattern" kennengelernt, das entscheidet, wie eine Instanz in einer Oberklasse erstellt wird, und das die spezifische Verarbeitung in einer Unterklasse beschreibt.

Kapitel 4 Impressionen

Bei der Verwendung von Mustern, nicht nur von Factory-Methodenmustern, dachte ich, ich müsste Superklassen richtig verstehen. Also werde ich einen Kommentar darüber schreiben, was es für die Superklasse bedeutet. ~~ 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/532d33fd823e52ab0d1a

Seite über PlantUML

Die folgenden Sites wurden bei der Installation von PlantUML berücksichtigt. https://qiita.com/kohashi/items/1d2c6e859eeac72ed926 Die folgenden Seiten wurden beim Schreiben von PlantUML berücksichtigt. https://qiita.com/ogomr/items/0b5c4de7f38fd1482a48

Recommended Posts

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
Zusammenfassung der Prototypmuster der Einführung in Entwurfsmuster, die in Java gelernt wurden
Singleton-Musterzusammenfassung der Einführung in Entwurfsmuster, die in Java gelernt wurden
[Von Zeit zu Zeit aktualisiert] Zusammenfassung der Entwurfsmuster in Java
Mit Java & PHP erlernte Entwurfsmuster (Zusammenfassung)
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 6] Einführung in Scicit-Learn mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Entwurfsmuster in Python: Einführung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Einführung in die in C Language Part 1 Server Edition erlernte Socket-API
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
Einführung in die Überprüfung der Wirksamkeit Kapitel 3 in Python geschrieben
100 Sprachverarbeitung Knock UNIX-Befehle in Kapitel 2
Zusammenfassung zum Importieren von Dateien in Python 3
100 Sprachverarbeitung Klopfen Sie auf reguläre Ausdrücke, die Sie in Kapitel 3 gelernt haben
Zusammenfassung der Verwendung von MNIST mit Python
100 Sprachverarbeitung klopft Morphologische Analyse in Kapitel 4 gelernt
Einführung in die Überprüfung der Wirksamkeit Kapitel 2 in Python geschrieben
Verstehen Sie Entwurfsmuster, indem Sie Implementierungen in JavaScript und Java vergleichen. [Von Zeit zu Zeit aktualisiert]
Zusammenfassung der Tools, die zum Analysieren von Daten in Python benötigt werden
Einführung in die Python-Sprache
[Einführung in Python] Zusammenfassung der Funktionen und Methoden, die häufig in Python vorkommen [Problemformat]
Entwerfen Sie Muster für häufig verwendete Java-Bibliotheken - Builder-Muster
Entwerfen Sie Muster für häufig verwendete Java-Bibliotheken - Adaptermuster
Entwerfen Sie Muster für häufig verwendete Java-Bibliotheken - Strategiemuster
Einführung in die Statistik Die University of Tokyo Press Kapitel 2 Übungen
Zusammenfassung zum Schreiben von in gRPC verwendeten .proto-Dateien
Einführung in die Socket-API in C Language 2nd Client Edition
[Einführung in cx_Oracle] Übersicht über cx_Oracle
Versuchen wir das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" - Kapitel 3 Schritt 10 Memo "Details und Verbesserung des neuronalen Netzes"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 06 Memo "Identifier"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 02 Memo "Vorverarbeitung"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 07 Memo "Evaluation"
Einführung in die Socket-API in C-Sprache 3. TCP-Server / Client Nr. 1
So implementieren Sie Java-Code im Hintergrund von Red Hat (Linux ONE)
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
Entwerfen Sie Muster für häufig verwendete Java-Bibliotheken - Muster der Vorlagenmethode
Ich habe versucht, in 3 Jahren 5 Muster der Analysebasis zu erstellen
Entwerfen Sie Muster für häufig verwendete Java-Bibliotheken - Fassadenmuster
Einführung in die in C-Sprache gelernte Socket-API 4. UDP Server / Client Edition Nr. 1
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 4 Schritt 14 Memo "Hyperparametersuche"
Zusammenfassung des Schreibens von if-Anweisungen (Scala, Java, Rust, C-Sprache, C ++, Go-Sprache, PHP, Perl, Python, Ruby)
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 04 Memo "Feature Extraction"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 3 Schritt 08 Memo "Einführung in neuronale Netze".
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 05 Memo "Feature Quantity Conversion"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 3 Schritt 11 Memo "Worteinbettungen"
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (4) [Einführung in Routing-Einstellungen und MTV-Entwurfsmuster]
100 Sprachverarbeitung Knock Kapitel 1 in Python
[Einführung in Python3 Tag 13] Kapitel 7 Zeichenfolgen (7.1-7.1.1.1)
Zusammenfassung der Verwendung von pyenv-virtualenv
[Einführung in Python3 Tag 14] Kapitel 7 Zeichenfolgen (7.1.1.1 bis 7.1.1.4)
Einführung in Protobuf-c (C-Sprache ⇔ Python)
Einführung einer datengesteuerten Controller-Entwurfsmethode
Zusammenfassung verschiedener Operationen in Tensorflow
Muster der Verantwortungskette in Java