已发布接口(published interface)与公共接口(public interface)
表弟在读《重构》一书,对已发布接口的概念有些迷惑,我对其进行通俗的解释如下:
已发布接口是指已经发布出去为其他系统的构件所使用的接口,有多少接口的调用者是无法知道的,已发布接口必须保持稳定,否则一旦修改,将引起其调用者的失败,而又不可能穷举出其调用者对他们进行修改,因为接口的作者不知道有多少调用者,接口的作者也无权修改借口的调用者。假设A为一个已发布接口,如果对A进行了修改形成了新的接口B,则为了保证A的调用者能够正常工作,需要在A中调用B,而新的需要调用A接口的构件直接调用B接口就可以了。所以Martin Flower讲“不要过早发布接口”,否则一旦接口不稳定,问题就复杂了。
公共接口是指为系统内的其他构件所使用的接口,有多少接口的调用者是可以穷举的,修改公共接口时,可以修改其调用者,使调用者能够在新版的接口上正常工作。