SWITCH usage with returning the object reference. This would be great to reduce lot of clutter from the design pattern implementation i.e. Factory design pattern.
Selection criteria object for the reports where you can implement the MVC for decoupling. This approach is using the FM RS_REFRESH_FROM_SELECTOPTIONS.
In this post, I would show you a more flexible design using ABAP Objects. This design is to decouple logic, criteria, data display as much as possible.