Class Hierarchy 
<p>Please don't mind about the syntax. I thought of making the post as brief as possible.</p>

<p>We have a class hierarchy as below.</p>

<pre><code>// abstract class.   
class BaseProd   
// concrete classes.   
class Prod1 : public BaseProd   
class Prod2 : public BaseProd   
class Prod3 : public BaseProd   
</code></pre>

<p>Each class has 3 sub classes like, Prod1New, Prod1Cancel and Prod1Modify the same case for the other 2 classes. Now, since New, Cancel and Modify are the events, we can represent them using enum.</p>

<p>The problem is, each class has lot of methods that are very specific to each event. Eg.</p>

<pre><code>getRec(); // has specific implementations for each event.   
</code></pre>

<p>Let's say there is something like process method.   </p>

<pre><code>void Prod1::process()
{
   getRec(); // Each derived class overrides the method.   
   getPayment();// Each derived class overrides the method.   
}  
</code></pre>

<p>This way, we have 13 classes for 3 products having 3 events each.<br>
If we have 2 more products the classes would grow by 8.</p>

<p>Can we have any alternate approach to this hierarchy?</p>

<p>UPDATE:
The suggestion made by Tyler works only when 
Prod1's NewEvent and Prod2's NewEvent have the same implementation. Right? But in this case it is not. Atleast for some of the methods it is not.</p>
