0

'Uncle Bob' Martin 在'Agile Software Development' pp318-9 中提出了一个很好的论点,即“接口属于客户端,而不是衍生产品……客户端倾向于与它们控制的接口打包在一起”。

在实践中,人们如何用静态类型语言将接口与客户端打包?从单个接口的角度来看——一个好的 OO 接口有几个实现——Martin 的建议是有道理的。但是在包级别,每个服务器通常都有许多客户端,并且让服务器依赖于它的客户端似乎会使依赖关系箭头指向错误的方向。事实上,后来在“封装设计原则”中,Martin 引入了一个格言“依赖于稳定性的方向”,它直观地暗示了客户端 -> 服务器。

4

1 回答 1

0

“鲍勃叔叔”是正确的,但他的建议并不总是实用的。在构建商业 3rd 方库时,从所有未来客户那里收集所需的接口显然是不切实际的。话虽如此,设计接口以满足所有已知用例的方法仍然有效。从概念上讲,接口属于客户端,而不是库。

在构建内部实用程序时,就像“鲍勃叔叔”建议的那样,直接将接口与客户端打包。

于 2013-04-07T16:49:58.257 回答