This wraps up the series of posts on SOLID Code with Emergent Design.
Dependency Inversion Principle
"Separate interfaces so callers are only dependent on what they actually use"
The SOLID principles really boil down to managing your dependencies between classes. And, by "manage", we really mean "get rid of those suckers."
Removing dependencies (aka, de-coupling) has a number of advantages. For starters, your code becomes significantly easier to understand and maintain because it is possible to understand each piece in isolation from the rest. It’s also easier to reuse your code in other applications because it’s not hopelessly entangled in your own application’s specifics. And, of course, the fewer dependencies there are, the fewer chances you have of changes to one part of the code inadvertently breaking a different part of the code.