High-Level and Low-Level Modules - What Is the Dependency Inversion Principle? | OneNoughtOne