Dependency Inversion Principle
High-level modules should not depend on low-level modules; both should depend on abstractions. Invert the dependency flow.
High-level modules should not depend on low-level modules; both should depend on abstractions. Invert the dependency flow.
Clients should not depend on interfaces they don't use. Break large interfaces into smaller, focused ones.