请不要在意语法问题。我考虑尽可能简短地发帖。
我们有以下的类层次结构。
```html
每个类都有3个子类,如Prod1New、Prod1Cancel和Prod1Modify,其他2个类也是这样。现在,由于New、Cancel和Modify是事件,我们可以使用枚举来表示它们。
问题是,每个类都有很多方法,这些方法非常特定于每个事件。例如:
假设有一个名为“process method”的东西。
我们有以下的类层次结构。
```html
We have a class hierarchy as below.
```// abstract class.
class BaseProd
// concrete classes.
class Prod1 : public BaseProd
class Prod2 : public BaseProd
class Prod3 : public BaseProd
每个类都有3个子类,如Prod1New、Prod1Cancel和Prod1Modify,其他2个类也是这样。现在,由于New、Cancel和Modify是事件,我们可以使用枚举来表示它们。
问题是,每个类都有很多方法,这些方法非常特定于每个事件。例如:
getRec(); // has specific implementations for each event.
假设有一个名为“process method”的东西。
void Prod1::process()
{
getRec(); // Each derived class overrides the method.
getPayment();// Each derived class overrides the method.
}
这样,我们有3个产品,每个产品有3个事件,共有13个类。
如果我们再增加2个产品,类的数量会增加8个。
我们能否有任何替代方法来处理这种层次结构?
更新: Tyler提出的建议仅在Prod1的NewEvent和Prod2的NewEvent具有相同实现时才有效。对吧?但是在这种情况下并非如此。至少对于某些方法而言不是这样。