J'ai un Gestionnaire de scénarios Trigger où je délégué le déclenche (dans d'autres mots déclencheurs souscrivent) aux différents gestionnaires .Marque code plus générique en Java
Pour l'instant j'ai trois types gestionnaire, j'utiliser un interrupteur cas avec ENUM (ENUM est ici le type de gestionnaire) pour rediriger pour corriger gestionnaire.
Mais mon code ne semble pas extensible, ce n'est pas générique et il ne suit pas le principe SOLID . Imaginez si je dois avoir plus gestionnaire
Je vais finalement venir et éditer mon code de cas de commutation et je vais avoir plus de cas où il affecte la complexité cyclomatique de mon code
Ci-dessous mon extrait de code exact
private static TriggerContext getTriggerContext(TriggerHandlerType triggerHandlerType) throws TriggerHandlerException {
switch (triggerHandlerType) {
case DASHBOARD_HANDLER:
triggerContext = new TriggerContext(new DashboardTriggerHandler());
return triggerContext;
case COMPONENT_HANDLER:
triggerContext = new TriggerContext(new ComponentTriggerHandler());
return triggerContext;
case WIDGET_HANDLER:
triggerContext = new TriggerContext(new WidgetTriggerHandler());
return triggerContext;
default:
LOGGER.error(MIS_CONFIGURED_REQUEST_IS_PROVIDED);
throw new TriggerHandlerException(TRIGGER_HANDLER_TYPE_GIVEN_IS_NOT_CONFIGURED_IN_THE_LIST_OF_TRIGGER_HANDLERS);
}
}
que quelqu'un peut me aider à améliorer ce code en ce que je peux le rendre plus générique et d'éviter la complexité cyclomatique et suivre SOLID Principe avec un certain modèle de conception .
Ceci est une question pour Stack Exchange Code Review –
Regardez dans un modèle de stratégie. https://en.wikipedia.org/wiki/Strategy_pattern – Taylor
Vous pouvez ajouter une méthode factory 'createTrigger()' sur les instances Enum, et l'appeler comme 'triggerHandlerType.createTrigger()'. Ou une étape encore plus formelle: vous pourriez créer une interface 'TriggerFactory', que vous implémenteriez avec Enum, et utiliser ce type chaque fois que possible. – ppeterka