MongoDB 和 Spring 数据 - 多态性是个好主意吗?
MongoDB and Spring Data - Is polymorphism a good idea?
假设我有三种类型的文档,它们的不同之处在于某些字段。假设:
- 对于类型 A:我们有
field1
和 field2
- 对于类型 B:我们只有
field1
但没有 field2
- 对于类型 C:我们有
field3
所有其他字段相同。使用从基础 class 继承的三个 classes 来表示数据是个好主意吗?
提醒一下:
继承有两个方面:code reusing and overriding.
第一个解决了重复问题(看起来像你的想法),而第二个为相同的概念定义了不同的行为实现。
当然,在某些情况下,您可能会从双方受益。
关于您的问题:
Would that be a good idea to represent the data using three classes
inheriting from a base class?
如果 A、B 和 C 被设计为 仅 来保存数据(因此内部没有 logic/behavior)分解公共字段(即除 field1、field2 之外的所有字段)和 field3) 在基础 class 中是有道理的。它将避免重复,重复是一种难闻的气味。
另一方面,如果 A、B 和 C 也有逻辑,那么只有当这些 class 表示相同的一般概念时,才应该引入基数 class。否则你的抽象是错误的,可能会导致混乱的使用,我们试图统一(通过基础 class)操作实际上是不同概念的东西。
假设我有三种类型的文档,它们的不同之处在于某些字段。假设:
- 对于类型 A:我们有
field1
和field2
- 对于类型 B:我们只有
field1
但没有field2
- 对于类型 C:我们有
field3
所有其他字段相同。使用从基础 class 继承的三个 classes 来表示数据是个好主意吗?
提醒一下:
继承有两个方面:code reusing and overriding.
第一个解决了重复问题(看起来像你的想法),而第二个为相同的概念定义了不同的行为实现。
当然,在某些情况下,您可能会从双方受益。
关于您的问题:
Would that be a good idea to represent the data using three classes inheriting from a base class?
如果 A、B 和 C 被设计为 仅 来保存数据(因此内部没有 logic/behavior)分解公共字段(即除 field1、field2 之外的所有字段)和 field3) 在基础 class 中是有道理的。它将避免重复,重复是一种难闻的气味。
另一方面,如果 A、B 和 C 也有逻辑,那么只有当这些 class 表示相同的一般概念时,才应该引入基数 class。否则你的抽象是错误的,可能会导致混乱的使用,我们试图统一(通过基础 class)操作实际上是不同概念的东西。