ç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 4è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 "Template Method pattern". L'article précédent est ci-dessous. https://qiita.com/sirajirasajiki/items/53e1d2aea166190f9a6f
Cette fois, je voudrais décrire le "modèle de méthode d'usine". Il existe également un exemple de programme pour le "modèle de méthode d'usine", mais nous l'omettons pour des raisons de copyright. Essaye de comprendre.
"Introduction aux modèles de conception appris en langage Java"
La méthode d'usine est simplement le modèle de méthode modèle appliqué à l'instanciation.
C'est vrai.
Je pense que certaines personnes peuvent trouver cela difficile à imaginer, alors je vais donner un exemple. Imaginez une usine. A l'usine, les produits sont créés. Dans les grandes chaînes de magasins telles que Shimamura et UNIQLO, les t-shirts sont souvent fabriqués dans les usines, n'est-ce pas? Je pense que la taille est à peu près décidée pour chaque taille, comme celle-ci pour la taille S et celle-ci pour la taille M. Cependant, je pense que les matériaux et les designs diffèrent d'une entreprise à l'autre. Je pense que l'usine fabrique également d'autres ordinateurs personnels. S'il s'agit d'un ordinateur personnel, la mémoire sera de 16 Go et elle sera divisée comme un SSD ou un disque dur. De cette façon, tout ce que vous fabriquez dans l'usine est un produit, n'est-ce pas? Si fabriquer quelque chose en usine est une super classe, l'usine de t-shirts est une sous-classe. Cependant, vous pouvez également créer une sous-classe appelée fabrique d'ordinateurs. En utilisant une classe abstraite, vous pouvez créer des sous-classes complètement différentes avec un concept commun.
De cette manière, la superclasse peut décider comment créer une instance, et en laissant le traitement spécifique à l'instance, le cadre de création de l'instance et la création de l'instance peuvent être considérés séparément. De plus, en laissant le traitement spécifique à l'instance, la superclasse peut créer une situation qui ne dépend pas de l'instance.
Les sous-classes créées avec le "modèle de méthode d'usine" peuvent décider comment créer des instances dans des superclasses. Vous devez donc bien comprendre la super classe.
Créez un diagramme de classes et du code Python à l'aide de l'exemple d'usine de «Introduction aux modèles de conception appris dans le langage Java». Cette fois, nous allons créer une classe d'usine et une classe de produit, et créer une classe d'usine d'ordinateurs personnels et une classe d'ordinateurs personnels qui héritent de chacune. Dans la classe factory, une méthode abstraite appelée "createProduct" qui crée un produit et une méthode abstraite appelée "registerProduct" qui enregistre le produit créé sont déclarées, et ces deux classes abstraites sont implémentées dans des sous-classes. De plus, il existe une méthode qui implémente le flux de création d'un produit en utilisant "createProduct" appelé "create" et en enregistrant le produit avec "registerProduct". La classe d'usine PC hérite de la classe d'usine, implémente «registerProduct» et «createProduct», et hérite d'une méthode appelée «get_owners» qui indique qui l'a acheté.
La classe de produit implémente uniquement une méthode abstraite appelée «utilisation» qui utilise le produit créé. La classe d'ordinateurs personnels hérite de la classe de produit, implémente "use", et implémente une méthode pour créer sa propre instance et une méthode "get_owner" pour savoir à qui l'envoyer. Lors de sa mise en œuvre réelle, il devrait être possible d'acquérir ou d'enregistrer la destination, les spécifications de l'ordinateur personnel ou corporatif, etc., mais cette fois, il s'agit d'un exemple utilisant la méthode d'usine, nous ne le ferons donc pas.
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. factory_method.txt. https://github.com/sirajirasajiki/design_pattern_uml/tree/master/template_method 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/FactoryMethod
J'ai découvert le "modèle de méthode d'usine", qui décide comment créer une instance dans une superclasse et décrit un traitement spécifique dans une sous-classe.
Lorsque vous utilisez des modèles, pas seulement des modèles de méthode d'usine, je pensais que je devais comprendre correctement les superclasses. Donc, je vais écrire un commentaire sur ce que cela signifie pour la super classe. ~~ 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/532d33fd823e52ab0d1a
Les sites suivants ont été pris en charge lors de l'installation de PlantUML. https://qiita.com/kohashi/items/1d2c6e859eeac72ed926 Les sites suivants ont été pris en compte lors de l'écriture de PlantUML. https://qiita.com/ogomr/items/0b5c4de7f38fd1482a48
Recommended Posts