通常认为基于接口的应用程序的每个类(不包括域模型)都是一种好习惯吗?即使只在你的包中调用该类?
更新:根据评论,这是一个我能想到的示例场景,我觉得在基于界面的课程中做得很好。
我的父包中的Calculator类,进行一些计算并使用另一个类(打印机)将结果打印到文件系统。假设Calculator类是公共的,Printer类具有包保护。现在,如果我希望打印机通过HTTP发送结果而不是将其写入文件系统,该怎么办?
如果Printer类基于接口,并且我使用Spring注入Printer类。我本可以很容易地用新的实现换掉实现。
答案 0 :(得分:1)
完全没有。
接口最适合用于计划提供各种多态实现的地方,或者您希望为了单元测试而反转依赖关系的地方。
只应在必要时创建接口。它们应该经过精心设计。
答案 1 :(得分:0)
它主要是一种设计选择。理论上,最好在实践中“编写接口”以使一切实现接口通常会导致额外的工作和类SomethingImpl
~Impl是一些冗余给定的implements关键字而不是非常描述实现
答案 2 :(得分:0)
当你明确想要在功能上指定一个类应该做什么时,应该使用IMO接口。通常情况下,当我预测在某个时刻包含接口的类需要不同的实现时,我会创建一个接口。只要其界面知道该怎么做,同一个班级并不关心如何完成任务。
"编程到接口"允许你插入"插入"使用Spring等运行时的不同实现,而功能规范保持不变。以战略模式为例。
另外,两个完全不同的类(没有继承)可以实现一个公共接口,如果在某些时候期望它们执行相同的操作/表现出相同的行为。
虽然您可能会为任何类提取接口,但可能没有理由一直这样做。