原则2:单表继承中的父类应该是抽象的


Doctrine2: Should parent classes in single table inheritance be abstract?

我正在为我的类在 Doctrine2 应用程序中编写构造函数,比如水果、苹果、香蕉。

Fruits 是父类,其中 ApplesBananas 继承Fruits在字段type上使用单个表继承。

在 Doctrine2 文档页面上,提供了一个单表继承的示例。如果我们总是使用单表继承进行判别,那么基类是否应该Fruits抽象的,因为必须始终设置鉴别器字段?如果是这样,是否也应保护 Fruits 的构造函数以防止此行为?

由于父类"Fruits"中没有需要重新声明的方法,我认为不需要将其声明为抽象。

此外,您可能会发现一个用例,您可能希望持久保存"水果"的实例(不确定它是什么类型的水果)。将父级标记为摘要将阻止您执行此操作。

也许水果是一个坏例子。但是他们在文档中的 Person 示例更好。员工将继承人员定义。但我可能也只想保留一个未确定类型的 Person 实例。因此,@DiscriminatorMap中的"人"="人"。

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#single-table-inheritance