它似乎是标准所以我到目前为止一直在使用它,但现在我正在从头开始构建一个新类而不是修改旧类,并且我觉得我应该理解为什么我应该遵循项目约定.
几乎每个类都有一个调用它的接口classnameable.在代码中database.class永远不会出现一次,但在我希望使用我看到的那个类的地方databaseable.class.
根据我的理解,接口是一个从未实现过的类,但是为了保持标准而固有.那么为什么接口被用作真正的类呢?
根据我的理解,接口是一个从未实现过的类,但是为了保持标准而固有.那么为什么接口被用作真正的类.
这有点困惑.接口定义API,以便来自不同作者,模块或项目的代码片段可以进行交互.例如,java.util.Collections.sort()可以对实现List接口的任何内容进行排序,并包含实现接口的对象Comparable- 即使在编写排序代码时可能还没有实现类!
现在,在你的项目的情况似乎反映了一个不幸的是相当常见的反模式:一种针对接口的一切,大多是单一的实现类,甚至是内部类.
过去,测试驱动开发(TDD)的支持者强烈推动这一点,他们认为能够独立测试每个类,并将所有依赖项替换为模拟对象是至关重要的.较旧的模拟框架只能模拟接口,因此为了能够隔离地测试每个类,所有类间依赖关系都必须通过接口.
幸运的是,较新的模拟框架可以模拟具体的类,并且不要求您使用不必要的接口污染您的项目.有些人可能仍会争辩说无论如何都应该"减少耦合",但是IMO他们只是在合理化他们不改变他们的做法的愿望.
当然,如果你不做原教旨主义的TDD,那么就没有充分的理由为所有东西建立一个接口 - 但是有很好的理由为某些东西设置接口.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |