der*_*itz 3 java coding-style interface
我正在开发一个带有许多someInterface的项目 - someInterfaceImpl-pairs.前几天我得到了这个想法(可能是通过阅读一些客观的c代码来启发),将默认实现包含在内部类中.现在一些同事(都有比我更多的java经验)看到了这个想法 - 反馈是震惊和惊讶之间("这有用吗?").
我google了一下,但没有发现这个"模式"(个人我喜欢它)有用的证据: pdf-paper 和 关于代码风格的常见问题
您如何看待 - 特别是在"默认"实现紧密耦合到接口的情况下.
更新 我发现这个:Java接口 - 实现对
(见接受的答案)
接口的重点是将用户与实现分开(默认与否).你通过将实现包含在内部类中来打败它.您并没有真正保存任何代码行,而且会使API混乱.您最终必须做一些事情来隐藏接口用户的内部类,比如将其设置为私有或默认范围,最好避免使用它.此外,如果您的默认实现需要更改但您已将该接口作为API的一部分发布,该怎么办?这是一个坏主意,因为它没有很多好处,而且是一种反模式.
最后,如果你真的有一个默认实现,那么也许它应该是一个基类(而不是一个接口),其他实现扩展了类和覆盖行为.
我认为这篇文章对类似问题进行了有趣的讨论: 问题