2012-09-04 76 views
0

几个子类扩展了我的抽象父类。这些子类几乎没有相同的属性,例如日期。所以我的问题是我应该在抽象类中还是在每个子类中声明这些属性(日期)的setter和getters? 在一个子类中,它是其他“日期”中的“发布日期”,所以我应该“投”它到所有日期?良好实践 - 操作设计

回答

2

取决于。许多建议使用构图(即:有一个)而不是继承(即:是)。而且大多数情况下,这取决于你想要达到的目标。两种方法都有优点和缺点。

如果你想把这些属性放到基类中,那么所有的类都有这些属性,但你说的不是所有的都有。作为一个很好的设计,如果你没有完全填充一个对象,也就是说,你留下一些空字段或空的字段,目的是不好的。你的对象应该完全填充。

所以你可以做的是,你可以将包装属性转换为行为(另一个对象)并将它们委托给想要使用这些行为的类。

使用你的直觉,无论哪种感觉都对,并简化你的生活。

1

如果您要说所有的子类都使用相同的字段来实现相同的目的,那么通过所有的方法将它添加到父类中,并节省一些重复。如果你认为子类为了不同的目的而使用'date'字段(你提到它们被称为不同的名字),那么你应该在子类中声明它自己,并且不要超级类型的字段用于多于1目的(否则从长远来看这会非常混乱)。