of principles that help to produce better software and also to become a better Object-Orinted programmer • First described by Robert „Uncle Bob“ Martin
should not depend on a low level modules. Both should depend on abstraction Abstractions should not depend on details. Details should depend on abstractions
We invert the dependency – instead of depending on a concrete implementation we should depend on the interface. Then using LSP, we can write the implementation of the interface. And also we can wire a perfect mock that we can use to test our class properly, independently and fast.