 <p>Since <code>Light</code> inherits from <code>Switchable</code>, it could also be deployed with <code>Switchable</code> - it seems, however, due to the naming, that the primary class interacting with the <code>Switchable</code> interface will be <code>Switch</code> - which means that the two are tightly-coupled: you should never put tightly-coupled class/interface definitions in separate assemblies. </p> <p>You could also conceive of other <code>Switchable</code> classes, such as <code>Outlet</code> or a whole set of <code>Appliances</code>. These could be added at a later date, and they would have nothing to do with <code>Light</code>, meaning that <code>Light</code> and <code>Switchable</code> aren't necessarily part of the same component. However, the <code>Switch</code> class would still apply to these new classes and would apply.</p> <p>(It is true that a different consumer of the <code>Switchable</code> interface could be conceived, but it would likely be an awkward adaptation, such as a <code>ToggleButton</code> that toggled the on/off state by remembering the last method called. However, with the names chosen, <code>Switchable</code> still implies that a <code>Switch</code> could be involved.)</p> <p>I hope this answers your question.</p>