SOLID: Dependency Inversion Principle
All programs are composed of functions and data structures and the SOLID principles introduced by Robert C. Martin, help us group our code into modules and advise how to interconnect them.The goal of the SOLID principles is to build software structures like Lego blocks that can be easy to change, understand and swap out.