原文:
PublishedInterface
设计 2003年12月26日
我是在《 重构》里第一次使用“发布接口(Published Interface)”这个术语的,如果一个class接口在定义它的代码库(code base)以外也被用到了,那它就成了一个发布接口。它比Java的public公开的意味更足,也远甚于C#的非内部public(non- internal public)。我曾 撰文论说过发布(published)与公有(public)之间的区别比public与private的区别更重要。
其原因在于,一个非发布接口,对它的使用限制在了唯一一个代码库里边,因此,你可以修改它——只要在调用它的地方也做好相应的修改。比如改改名字什么的,现代化的重构工具能帮你轻松搞定。然而,这个接口一旦发布出去,你就鞭长莫及了,你没办法修改外界调用它的代码。
我是在《 重构》里第一次使用“发布接口(Published Interface)”这个术语的,如果一个class接口在定义它的代码库(code base)以外也被用到了,那它就成了一个发布接口。它比Java的public公开的意味更足,也远甚于C#的非内部public(non- internal public)。我曾 撰文论说过发布(published)与公有(public)之间的区别比public与private的区别更重要。
其原因在于,一个非发布接口,对它的使用限制在了唯一一个代码库里边,因此,你可以修改它——只要在调用它的地方也做好相应的修改。比如改改名字什么的,现代化的重构工具能帮你轻松搞定。然而,这个接口一旦发布出去,你就鞭长莫及了,你没办法修改外界调用它的代码。