title: decoupling from future APIs - first-timer discovering need for dependency injection
body: <p>I have a naive question about OOP design patterns. This is over-architecture, but I need a recommendation, not judgment. Suppose you have a class hierarchy dictated by "business requirements". So, you've got a deeper version of <code>Pizza : Freight</code>, <code>Flowers : Freight</code> and a <code>TonOfBricks : Freight</code> and you've got an <code>IDispatchService&lt;F&gt; where F : Freight</code> and an <code>IDeliveryService&lt;F&gt; where F : Freight</code>.</p>
  
  <p>Now suppose that different <code>IDeliveryService</code> implementations want different information about the freight. What they want <em>does not parallel your class hierarchy</em>, and you have no clue what delivery service (ie. API) you're gonna use in a month for what kind of parcel. Furthermore, you may have enough information to send one pizza through a vacuum tube, but maybe not the next.</p>
  
  <p>Now you realized that you can also hire people to deliver your pizzas on rollerblades, but you'll need to specify the center of mass of every object delivered this way or else insurance will kill you. Do you implement it as an <code>IDeliveryService&lt;Pizza&gt;</code>? Are you also adding a new interface <code>IHasCenterOfMass</code> and maybe implementing as <code>IDeliveryService&lt;IHasCenterOfMass&gt;</code>? If so, how's the dispatcher gonna like it? Are you adding a relation to your database for center of mass? </p>