📄️ Overview
Object-oriented design concepts.
📄️ Single Responsibility Principle
A software module has one, and only one, reason to change.
📄️ Open-closed Principle
A software artifact should be open for extension but close for modification.
📄️ Liskov Substitution Principle
If for each object o1 of type S is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T.
📄️ Interface Segregation Principle
No code should be forced to depend on methods it does not use.
📄️ Dependency Inversion Principle
The most flexible systems are those in which source code dependencies refer only to abstractions, not to concretions.