Take advantage of the dependency injection principle to provide support for pluggable implementations in your application and build loosely coupled, testable components The Dependency Inversion ...
If you adopt the Interface Segregation principle, then you can eliminate (or, at least, control) one of the most annoying problems in creating very useful objects. But following that principle through ...