模型对象应该有接口吗?

sma*_*sma 12 java oop modeling interface

我正在我的系统中创建域模型.在设计模型对象时,我应该为每个实体对象创建接口吗?人们告诉我,我们的Web层不应该关心实体的实现,我们应该能够交换实现,但我不确定是否会发生.

例如,如果我们有一个维护学生列表的Teacher类,则getStudents方法可以是:

public List<Student> getStudents() {
      return this.students;
}
Run Code Online (Sandbox Code Playgroud)

或这个:

public List<Student> getStudents() { 
     return someExternalService.retrieveStudents();
}
Run Code Online (Sandbox Code Playgroud)

我理解这个好处,但一般做法是什么?

Dav*_*vid 11

除非你有充分的理由认为你需要换掉模型,否则我不会担心它.基于YAGNI原则(你不需要它)

  • 在我看来,YAGNI比设计更多地应用于功能.例如,接口不会导致代码膨胀或测试中的复杂性; 根据我的经验,为了权宜之计,没有接口是问题所在. (5认同)