I came across one issue as to how to package interface, interface client and inheritance. That is, in the book below, author mentioned that Switachable is more appropriate to deploy with Switch together as a component, rather than Light.
What I want to understand is the reasoning behind it (Both Switch and Switchable are packaged in one component, rather Switchable and Light) , and example if possible.
I think there are cases where both scenarios are valid. One example that is oppoiste of that design is, IStream, FileStream are in one component, ISream client is in another component.
Below is from unclebob’s agile in C# ch 33, p497.

Since
Lightinherits fromSwitchable, it could also be deployed withSwitchable– it seems, however, due to the naming, that the primary class interacting with theSwitchableinterface will beSwitch– which means that the two are tightly-coupled: you should never put tightly-coupled class/interface definitions in separate assemblies.You could also conceive of other
Switchableclasses, such asOutletor a whole set ofAppliances. These could be added at a later date, and they would have nothing to do withLight, meaning thatLightandSwitchablearen’t necessarily part of the same component. However, theSwitchclass would still apply to these new classes and would apply.(It is true that a different consumer of the
Switchableinterface could be conceived, but it would likely be an awkward adaptation, such as aToggleButtonthat toggled the on/off state by remembering the last method called. However, with the names chosen,Switchablestill implies that aSwitchcould be involved.)I hope this answers your question.