为什么要为域实体使用接口?

mag*_*con 2 java entity interface

为域实体使用接口的目的是什么?

在我们的项目中,我们使用域实体的接口。在接口内部,只有 getter 和 setter 方法,甚至没有任何域逻辑。

为这样的实体使用接口有用吗?这是好的做法吗?

谢谢。

Ric*_*ngi 5

有时这是个好主意的原因有很多,但这实际上取决于项目的范围。

首先:你的陈述“......甚至没有任何域逻辑。” 没有意义,接口中不能有任何逻辑,接口不能有任何逻辑,只有方法签名。

这样做的主要原因是为了支持不同用途的域对象的多种实现。

您可能希望将域对象编码为接口的原因:

  1. 序列化 - 有时您想创建域对象的可序列化版本,但不想将该代码与您用于核心应用程序的代码混合在一起。例如,您可能有一个 Person 对象的实现,您只是用它来序列化 Web 应用程序的 JSON。

  2. 共享 API - 您可能希望分发具有不同对象实现的代码的公共 API 版本,或者您甚至可能只想将接口提供给另一个组(或客户端或供应商)

  3. 支持遗留实现 - 也许您在旧数据库中有一些数据,您需要为其构建连接器,这涉及域对象的不同实现以提取数据。

  4. 测试 - 为您的核心类提供接口使单元测试变得更加容易,因为您可以快速删除测试不需要的方法。