Experienced developers know many of the benefits of and motivations for using
interface-based design principles. Interfaces provide for polymorphic
behavior by hiding the implementation and only exposing the relevant public
methods of the implementing class. What may be less appreciated is that the
use of interfaces, when applied to an entire application, can provide for
application isolation, while at the same time enhancing testing capabilities.
In this article we'll explore the use of interfaces at all application
boundaries and gain an appreciation for why we should consider, and possibly
even mandate, interface-based design principles at all application
boundaries. This mandate should apply even if application requirements or
application design do not call for diffe... (more)