-1

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

我想了解的是它背后的原因(Switch 和 Switchable 都封装在一个组件中,而不是 Switchable 和 Light),如果可能的话,还可以举个例子。

我认为在某些情况下这两种情况都有效。与该设计相反的一个示例是,IStream、FileStream 在一个组件中,ISream 客户端在另一个组件中。

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

在此处输入图像描述

4

1 回答 1

1

由于Light继承自Switchable,它也可以部署Switchable- 然而,由于命名,与Switchable接口交互的主类将是Switch- 这意味着两者是紧密耦合的:你不应该把紧密耦合的类/interface 定义在单独的程序集中。

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

(确实Switchable可以设想一个不同的接口使用者,但它可能是一个尴尬的适应,例如ToggleButton通过记住最后调用的方法来切换开/关状态。然而,选择的名称Switchable仍然意味着aSwitch可能参与其中。)

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

于 2011-07-09T21:12:44.040 回答