SOLID Design Principles: Dependency Inversion Principle