[JAVA] Avantages de la génération de modèles AbstractFactory avec enum

Dans l'explication du modèle AbstractFactory, nous voyons souvent des exemples de passage d'une chaîne de caractères comme argument d'exécution ou de jugement if-else avec un indicateur.

Dans le développement personnel, vous ne vous souciez peut-être pas parce que vous savez tout. Cependant, s'il est fourni en tant que module à d'autres équipes en développement d'équipe, Comment savez-vous quelle Factory peut être générée par l'équipe fournie par Factory?

Je pense que la méthode consiste soit à vérifier le code vous-même, soit à vérifier avec la personne en charge du code côté usine.

Le responsable côté usine, que ce soit pour le code personne chez le client, Que ce soit parce qu'il est difficile de répondre lorsque vous vous posez la question, ** Veuillez noter que "Enum peut clairement montrer ce qui peut être généré" **.

Méthode de génération Factroy que vous voyez souvent

Exemple de code à juger en passant le nom de la classe sous forme de chaîne de caractères

Je pense que cela pose les problèmes suivants. ・ Est-il possible de dire que les chaînes de caractères spécifiées ne sont pas différentes? ・ Est-il possible que le cas soit correct? ・ N'est-il pas possible d'appeler une usine qui n'existe pas en premier lieu?

Exemple de détermination de l'usine à générer par le drapeau

Je pense que cela pose le même problème que le cas des cordes. De plus, sous cette condition de jugement, FactroyY est généré pour tout sauf 0, Cela inclut la possibilité que l'usine Y soit générée de manière inattendue.

Exemple d'utilisation de Enum

Lorsqu'il est implémenté en utilisant Enum, il indique explicitement le Factroy à créer et ne crée pas une Factory qui n'existe pas. * Le code suivant est ma propre amélioration du modèle Abstract Factory de TECH SCORE. Veuillez noter que cela n'a rien à voir avec TECH SCORE. </ span> 8. Modèle AbstractFactory

Use.java (client) Il est généré en spécifiant Recipe (classe Factory) dans HotpotType qui est Enum.

HotpotType.java (Enum pour générer Factory) L'usine qui peut être générée est définie ici. Si vous spécifiez Sukiyaki, la recette Sukiyaki sera générée.

Recipe.java (Classe d'usine) La génération d'usine est déléguée à HotpotType, vous pouvez donc vous concentrer uniquement sur l'implémentation abstraite.

Avantages de générer avec Enum

-Comme seul Factroy existant dans Enum peut être généré, une usine erronée ne sera pas générée. -Pour le développement d'équipe, le gestionnaire de code côté client n'a pas besoin de savoir ce qu'est la classe Generateable Factory. Si la classe Factory est manquante, il suffit de demander au programmeur en charge du côté Factory. -Facile à ajouter Factory. Vous n'avez pas besoin de modifier l'instruction if car il vous suffit d'ajouter la classe Factory requise pour Enum.

Si vous écrivez le programme vous-même, vous n'avez pas à y penser, ** Si vous travaillez en équipe et que vous êtes en charge de la division des modules En pensant de cette manière, la facilité du changement peut être améliorée et la modularisation peut être facilitée. ** **

Diagramme de classes

Github

https://github.com/TakumiKondo/designpattern/tree/master/src/abstractfactory/hotpot

Recommended Posts

Avantages de la génération de modèles AbstractFactory avec enum
modèle d'usine abstrait
Modèle d'usine abstraite
Modèle de conception ~ Usine abstraite ~
Coincé devant le forgeron par enum
[Algorithme] N nombres avec un intervalle de X