Universal Call Center is planning to support technical issues of end customers. These call center agents are basically going to work on two types of issues, which may be related to point and click or development. However, not necessarily every customer issue will be resolved with only the point and click or development solution. It might be possible that a customer wants to resolve the data loader issue as well, in addition to an admin issue (point and click). A few customers may want integration issues to be resolved, some other customers may ask for Apex issues to be fixed, and so on. Salesforce is such a big product that the requirements of all the customers will not fit into two simple plans.
The following diagram shows an attempt made by developers to solve this problem using inheritance:
From the preceding diagram, we can understand that there are lots of classes with repetitive code. There can be numerous other combinations of the support model, which will result...