4.4.8 How to Implement the Dependency Inversion Principle