# S.O.L.I.D Principles (java examples) * **Single responsibility principle** - A class should have only one reason to change. * **Open/Closed principle - Software** entities (classes, modules, functions, etc.) should be open for extension, but closed for modification. * **Liskov Substitution Principle** - Child classes should never break the parent class type definitions. * **Interface Segregation Principle** - No client should be forced to depend on methods it does not use. * **Dependency inversion principle** - High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.