Get rid of all switch blocks and replace it with modules, enum
Use Composite design pattern as much as possible
For each new functions have a module so that only relevant methods can be extended into classes
Refer Dependency injection and better ways to have constructors when the arguments are more than 5 - most of them are optional - what design you should be choosing ? (Hint use Builder for creating objects)
Refer Dependency injection and better ways to have constructors when the arguments are more than 5 - most of them are optional - what design you should be choosing ? (Hint use Builder for creating objects)