La syntaxe ne vous dérange pas. J'ai pensé rendre le poste aussi bref que possible.Hiérarchie des classes
Nous avons une hiérarchie de classes comme ci-dessous.
// abstract class.
class BaseProd
// concrete classes.
class Prod1 : public BaseProd
class Prod2 : public BaseProd
class Prod3 : public BaseProd
Chaque classe dispose de 3 sous-classes comme, Prod1New, Prod1Cancel et Prod1Modify le même cas pour les 2 autres classes. Maintenant, puisque Nouveau, Annuler et Modifier sont les événements, nous pouvons les représenter en utilisant enum. Le problème est, chaque classe a beaucoup de méthodes qui sont très spécifiques à chaque événement. Par exemple.
getRec(); // has specific implementations for each event.
Supposons qu'il y ait quelque chose comme une méthode de processus.
void Prod1::process()
{
getRec(); // Each derived class overrides the method.
getPayment();// Each derived class overrides the method.
}
De cette façon, nous avons 13 classes pour 3 produits ayant chacun 3 événements.
Si nous avons 2 autres produits, les classes augmenteraient de 8.
Peut-on avoir une autre approche de cette hiérarchie?
MISE À JOUR: La suggestion faite par Tyler ne fonctionne que lorsque NewEvent de Prod1 et NewEvent de Prod2 ont la même implémentation. Droite? Mais dans ce cas, ce n'est pas le cas. Au moins pour certaines méthodes, ce n'est pas le cas.
Oui .... vous devriez certainement adopter une approche différente. Pourquoi avez-vous besoin d'une classe différente pour chaque produit? Sont-ils significativement différents (possèdent des propriétés/méthodes différentes) ou ont-ils seulement des valeurs différentes (comme le nom et le prix)? Pourquoi avez-vous besoin de "Modifier" et de "nouvelles" classes pour chaque produit? Tu ne peux pas faire ces choses dans la classe? – mpen