Fowler的模式:以特定方式处理表继承

时间:2014-02-28 23:03:06

标签: java php oop design-patterns inheritance

这些天我正在阅读Martin Fowler的企业应用程序架构模式,这真的很棒。

因为我有点开始一个OO PHP项目(app后端),我想使用Data Mapper作为我的域模型。我读到了表继承,我注意到它有3种类型。

我不喜欢Single,因为我将拥有多个类型的条目,这些条目将从基类/类型中继承。在这种情况下,我会在db中有很多空的空间。

我不认为其他两个也适合。

这是由于我的计划:

  1. 基类(参赛作品)
  2. 子类(示例:StateInstitution extends Entry)
  3. 子类(示例:CompanyAffiliate extends Entry) ....
  4. 这里的要点是我打算将子类的额外信息保存到公共表tbl_entrymeta中 - 也就是说,我可以有许多从基类Entry类扩展的子类,但不是每个子类的单独表(只有一个,tbl_entrymeta)。

    我的问题是:如何在这种情况下使用Data Mapper?创建继承映射器的关键是什么?或元数据映射器是关键?

1 个答案:

答案 0 :(得分:-1)

为公共表(EntryMeta)创建一个Data Mapper类,它表示关系数据库表tbl_entrymeta的对象。该对象将在3个字段(列)中保存子类的元:

1. SubClass
2. FieldName
3. FieldType

通过这种方式,您可以轻松存储继承基类的所有子类的元数据,并使用其他信息字段对其进行扩展。