Solid Principles: A Software Developer’s Framework to Robust, Maintainable Code
The SOLID principles are a set of software design principles that teach us how we can structure our functions and classes to be as robust, maintainable and flexible as possible. Design Tip: If we see lots of code in switch statements, that should be a signal to us of a potential refactoring from a statement to several classes. Being able to design your software so that the minimum amount of code needs to change in order to take it from point A to point B.
To do this, we write interfaces and abstract classes in order to dictate the higher-level policy that needs to be implemented, and then we implement that policy using concrete classes.
Source: khalilstemmler.com