ç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.
"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.
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.
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.
Le code implémenté ci-dessous est disponible. Implémenté en Python 3.7. https://github.com/sirajirasajiki/design_pattern_python/tree/master/Singleton
Vous avez découvert le modèle Singleton, qui vous permet de créer une seule instance par programme.
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.
S'il y a quelque chose qui ne va pas, je vous serais reconnaissant de bien vouloir le signaler!
appendix
https://qiita.com/sirajirasajiki/items/02bde7075f8edd3570f1
https://qiita.com/ttsubo/items/c4af71ceba15b5b213f8
Recommended Posts