接口,接口客户端,vs继承,软件设计原则,组件打包问题

时间:2011-07-09 20:38:46

标签: c# java c++ design-principles

我遇到了一个关于如何打包接口,接口客户端和继承的问题。也就是说,在下面的书中,作者提到Switachable更适合与Switch一起部署为一个组件,而不是Light。

我想要理解的是它背后的原因(Switch和Switchable都打包在一个组件中,而不是Switchable和Light),如果可能的话还有示例。

我认为有两种情况都是有效的。一个例子是optiste,即IStream,FileStream在一个组件中,ISream客户端在另一个组件中。

以下是来自unclebob在C#ch 33,p497中的敏捷。

enter image description here

1 个答案:

答案 0 :(得分:1)

由于Light继承自Switchable,因此也可以使用Switchable进行部署 - 但是,由于命名,主要类似乎与{{1}进行交互} interface将是Switchable - 这意味着两者紧密耦合:你永远不应该将紧密耦合的类/接口定义放在单独的程序集中。

您还可以设想其他Switch类,例如Switchable或一整套Outlet。这些可以在以后添加,它们与Appliances无关,这意味着LightLight不一定是同一组件的一部分。但是,Switchable类仍将适用于这些新类并适用。

(确实可以设想Switch界面的不同消费者,但这可能是一种尴尬的改编,例如Switchable通过记住切换开/关状态最后一个方法被调用。但是,如果选择了名称,ToggleButton仍然意味着可能涉及Switchable。)

我希望这能回答你的问题。