[PYTHON] Résumé des modèles singleton de l'introduction aux modèles de conception appris en langage Java

ça fait longtemps. C'est blanc. L'autre jour, les ingénieurs seniors ne connaissent pas le modèle de conception! ?? Après cela, j'ai reçu une "Introduction aux modèles de conception appris en langage Java" écrite par Hiroshi Yuki, alors j'ai décidé d'étudier. Cependant, même si j'ai lu le livre, je ne m'en souviens pas, alors j'ai décidé de l'écrire sous forme de mémorandum. C'est la 5ème fois. Je ferai de mon mieux pour pouvoir terminer la course. De plus, il existe un exemple de programme dans "Introduction aux modèles de conception appris en langage Java", mais nous l'omettons pour des raisons de droits d'auteur. Essaye de comprendre.

La dernière fois, j'ai écrit un article sur le "modèle de méthode d'usine". L'article précédent est ci-dessous. https://qiita.com/sirajirasajiki/items/3a779d3529fbc14af801

Cette fois, je voudrais décrire le "motif Singleton". Il existe également un exemple de programme pour le "motif Singleton", mais nous l'omettons pour des raisons de copyright. Essaye de comprendre.

Chapitre 5 Instance d'un seul motif de singleton

"Introduction aux modèles de conception appris en langage Java"

Le modèle qui garantit qu'il n'y a qu'une seule instance est appelé le modèle Singleton.

Il y avait une description.

Par exemple, supposons que vous ayez un programme qui effectue plusieurs types d'opérations sur votre programme. Chaque opération utilise le résultat de l'opération pour l'opération suivante. Supposons que vous ayez une classe de gestion de calcul qui gère les résultats de ces opérations à la fois. À ce stade, si plusieurs classes arithmétiques peuvent être créées, le résultat arithmétique changera pour chaque instance. Par conséquent, vous pouvez obtenir le résultat du calcul souhaité à l'origine en créant une instance. De cette manière, il est utilisé lorsque vous souhaitez n'utiliser qu'une seule instance qui hérite d'une classe spécifique par programme.

Un exemple courant est la classe de paramètres qui contrôlent une machine. Par exemple, s'il existe plusieurs instances dans le même périphérique qui gèrent des paramètres tels que la température de la machine et l'état de fonctionnement de la machine, le périphérique ne saura pas à quelle instance se référer, n'est-ce pas? De plus, les paramètres sont différents pour chaque instance et vous ne savez peut-être pas lequel est correct, non? Utilisez ce modèle Singleton à de tels moments.

Exemple utilisant Singleton

Cette fois, je voudrais considérer la situation où la gestion des partitions du mahjong est effectuée par le modèle Singleton. Si vous reconstruisez l'instance à chaque fois dans le même jeu de Mahjong, le résultat final du score sera étrange, nous utiliserons donc le modèle Singleton. Dans une classe appelée Mahjong, les points et les instances sont gérés par des variables privées. De plus, on suppose que les méthodes d'acquisition d'instances de Mahjong, d'acquisition de points et de calcul de points sont gérées.

Diagramme de classe

singleton.png

Ce diagramme de classes est décrit comme PlantUML. Le code PlantUML que j'ai écrit se trouve sur le GitHub ci-dessous, veuillez donc lire Lisez-moi avant de l'utiliser. C'est singleton.txt. https://github.com/sirajirasajiki/design_pattern_uml/tree/master/singleton Pour plus de détails sur l'installation et l'utilisation de PlantUML, voir l'annexe ci-dessous.

Implémenté en Python sur la base du diagramme de classes

Le code implémenté ci-dessous est disponible. Implémenté en Python 3.7. https://github.com/sirajirasajiki/design_pattern_python/tree/master/Singleton

Précautions lors de l'utilisation du motif Singleton

Résumé

Vous avez découvert le modèle Singleton, qui vous permet de créer une seule instance par programme.

Chapitre 5 Impressions

En utilisant le modèle Singleton, il a été constaté que lorsque plusieurs instances sont créées, même les classes où les instances interfèrent les unes avec les autres et affectent le comportement du programme peuvent être utilisées en toute confiance. ~~ L'exemple utilisé dans l'explication sera implémenté en Python à une date ultérieure. ~~ Implémenté en Python.

finalement

S'il y a quelque chose qui ne va pas, je vous serais reconnaissant de bien vouloir le signaler!

appendix

Article suivant

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

Articles référencés lors de l'implémentation de Python

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

modifier l'historique

Recommended Posts

Résumé des modèles singleton de l'introduction aux modèles de conception appris en langage Java
Résumé du chapitre 2 de l'introduction aux modèles de conception appris en langage Java
Chapitre 4 Résumé de l'introduction aux modèles de conception appris en langage Java
Résumé du chapitre 3 de l'introduction aux modèles de conception appris en langage Java
Résumé du début au chapitre 1 de l'introduction aux modèles de conception appris en langage Java
[Mis à jour de temps en temps] Résumé des modèles de conception en Java
Modèles de conception appris avec Java et PHP (résumé)
Motif singleton en Java
Modèles de conception en Python: introduction
Résumé des différentes opérations dans Tensorflow
Modèle de chaîne de responsabilité en Java
Résumé du modèle de conception Java GoF
Résumé du traitement multi-processus du langage de script
[Gang of Four] Apprentissage des modèles de conception --Singleton
Résumé des commandes fréquemment utilisées dans matplotlib
Résumé de diverses instructions for en Python
Résumé des pages d'hébergement de la bibliothèque par langue
Modèles Gang of Four (GoF) en Python
Résumé des pierres d'achoppement lors de l'installation de CaboCha
Séparation de la conception et des données dans matplotlib
Résumé des modules et des classes dans Python-TensorFlow2-
Résumé des méthodes intégrées, etc. de la liste Python