Oop 良好实践-面向对象设计

Oop 良好实践-面向对象设计,oop,Oop,很少有子类扩展我的抽象父类。这些子类几乎没有相同的属性,例如日期。所以我的问题是,我应该在抽象类中声明这些属性(日期)的setter和getter,还是只在每个子类中声明? 在一个子类中,它是另一个“日期”中的“发布日期”,所以我应该将它全部“转换”为日期吗?如果您说所有子类都使用相同的字段用于相同的目的,那么请务必将其添加到父类中,并保存一些重复。如果您说子类都使用“日期”字段用于不同的目的(您提到它们被称为不同的名称),那么您可能应该在子类本身中声明它,而不是将超类字段用于多个目的(否则从长

很少有子类扩展我的抽象父类。这些子类几乎没有相同的属性,例如日期。所以我的问题是,我应该在抽象类中声明这些属性(日期)的setter和getter,还是只在每个子类中声明?
在一个子类中,它是另一个“日期”中的“发布日期”,所以我应该将它全部“转换”为日期吗?

如果您说所有子类都使用相同的字段用于相同的目的,那么请务必将其添加到父类中,并保存一些重复。如果您说子类都使用“日期”字段用于不同的目的(您提到它们被称为不同的名称),那么您可能应该在子类本身中声明它,而不是将超类字段用于多个目的(否则从长远来看这将非常混乱).

如果您说所有子类都使用相同的字段用于相同的目的,那么一定要将其添加到父类中,并保存一些重复。如果您说子类都使用“日期”字段用于不同的目的(您提到它们被称为不同的名称),那么您可能应该在子类本身中声明它,并且不要将超类字段用于超过一个目的(否则从长远来看这将非常混乱)。

视情况而定

许多人建议使用组合(即:Has a)而不是继承(即:Is a)。大多数时候,这取决于你想要实现什么。这两种方法都有利弊

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

因此,您可以做的是,将属性包装到行为(另一个对象)中,并将它们委托给想要使用这些行为的类

运用你的直觉,无论哪种感觉正确,简化你的生活

视情况而定

许多人建议使用组合(即:Has a)而不是继承(即:Is a)。大多数时候,这取决于你想要实现什么。这两种方法都有利弊

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

因此,您可以做的是,将属性包装到行为(另一个对象)中,并将它们委托给想要使用这些行为的类

运用你的直觉,无论哪种感觉正确,简化你的生活