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