Public versus published interfaces
Martin Fowler · IEEE Software · 2002
One of the growing trends in software design is separating interface from implementation. The principle is about separating modules into public and private parts so that you can change the private part without coordinating with other modules. However, there is a further distinction-the one between public and published interfaces. This distinction is important because it affects how you work with the interface.