1

我有一堂很长的课,我无法拆分,因为我需要一个数据库表(Google AppEngine + Objectify)中的所有字段。我已经尽可能地使用嵌入式类。该类主要由 getter 和 setter 以及它们背后的逻辑组成。

为了获得功能块,我决定使用重复继承。现在看起来像这样:

  • MyStoredModel extends
  • AbstractSettingsModel extends
  • AbstractHierarchyModel(处理父/子对象)extends
  • AbstractInformationModel(包含标题,描述,...)extends
  • ......
  • AbstractModel

更容易看到每个班级在做什么,而且我还说它更容易测试。缺点是“继承链”。

这被认为是不良行为吗?有什么更好的方法来缩小班级规模?

4

2 回答 2

4

我会考虑为这些使用组合。所以模型由设置、层次结构、信息对象组成。

这确实意味着您必须在顶级对象中包含所有 setter/getter,然后将它们委托给每个组件类中的相应 setter/getter,但至少您可以将它们的所有处理隔离到单独的类中没有继承层次结构的复杂性。这也意味着这些组件类现在可以自由地继承他们喜欢的任何东西。

于 2012-02-21T12:16:18.697 回答
0

只要继承在逻辑角度是有意义的,我很确定这就是它应该的方式。

但组合也可以是一个好主意。

于 2012-02-21T12:16:26.160 回答