Bonjour,Une classe parent doit-elle toujours référencer les classes enfants?
J'ai hérité de l'ancien code au travail et il utilise un modèle de conception plutôt inhabituel. La seule référence que j'ai pu trouver sur les forums à un modèle similaire était here. La situation est que le concepteur d'origine a une classe parent générique (non abstraite) qui a une méthode factory statique qui référence directement les classes enfants.
Voici un échantillon de ce style de codage, trouvé dans plusieurs endroits dans le code existant:
public static LoggerFactory getLoggerFactory(LogType type) {
switch (type) {
case LOG4J:
return Log4JLoggerFactory.getInstance();
case LOGBACK:
return LogBackLoggerFactory.getInstance();
default:
throw new RuntimeException("No logger factory defined for type " + type);
}
}
Où s'étendent Log4JLoggerFactory et LogBackLoggerFactory LoggerFactory.
Ceci me semble vraiment étranger mais avant que je ne redimensionne le code de manière significative, y a-t-il un but ou un avantage à ce modèle de conception (y a-t-il même un nom formel)?
Des idées ou des conseils sont grandement appréciés. Merci!
EDIT: Après avoir lu la réponse de Yishai, j'ai pensé que j'inclurais un lien vers le Wikipedia article on the Strategy pattern, pour faciliter la consultation. Merci à tous pour vos réponses!