What is "solid"
- Principle of Single Liability: A class should have only one responsibility. That is, it should only play one role.
- Open/Closed Principle: Should be open for extension but closed for modification.
- Principle of Liskov’s Substitution: If S is a subtype of T, then T-type objects can be replaced by S-type objects without having to change the properties of this program.
- Principle of Interface Segregation: Customers should not be forced to rely on methods they do not use.
- Inversion of Dependency: High-level modules should not depend on low-level modules, both should depend on abstractions; abstractions should not depend on details, details should depend on abstractions.