Dependency Inversion Principle Explained