On page 85 of Leo Brodie's book, Thinking Forth, he describes a component which he calls the "Interface Component." He describes its differences from, and benefits over a standard interface as follows:
When it comes to data interfaces between modules, traditional wisdom says only that “interfaces should be carefully designed, with a minimum of complexity.” The reason for the care, of course, is that each module must implement its own end of the interface (Figure 3.8).
This means the presence of redundant code. As we’ve seen, redundant code brings at least two problems: bulky code and poor maintainability. A change to the interface of one module will affect the interface of the opposite module.
He goes on to introduce the concept of the Interface Component:
There’s more to good interface design than that. Allow me to introduce a design element which I call the “interface component.” The purpose an interface component is to implement, and hide information about, the data interface between two or more other components (Figure 3.9).
Is this pattern applicable when programming in Java? Interfaces in Java are similar to those depicted in Figure 3.8 above. If an interface component object were to be introduced, wouldn't it, along with the two other objects all need to adhere to the Interface defined? I do not see what benefits the interface component would provide.
Any thoughts?