例如:我必须在我的项目中使用日期类,但我需要一些简单的方法来向Date添加分钟等。我应该:
public static Date addToDate(Date date, int timeToAdd)
等方法创建一个静态类
public Date add(int duration)
等方法
当我研究这个问题时,我对一般情况下更好的方法感兴趣,特别是关于标准库中的类。
答案 0 :(得分:5)
我会选择第一种方法。我讨厌一些OOP退化的事情之一是,有时无用的类会激增 - 通常它是一个完美主义的奇思妙想,它带来了奇怪类的升级,其中有两种方法而且没有什么真正重要的,这带来了一堆无用的代码
只需创建一个DateUtils
类,并始终检查Java Runtime是否已提供类似的内容。
答案 1 :(得分:2)
人们经常建议使用构图而不是继承。无论如何,有些情况下继承更合适。 你说过:
我需要一些简单的方法来向Date等添加分钟。
如果你真的需要简单的方法,并且不需要额外的字段来存储其他属性,那么按照@Giacomo方法,使用他建议的类DateUtils,使用可以执行所需操作的静态方法。
如果需要将其他数据存储到Date对象,请考虑使用类来执行此操作。如果是这种情况,我不同意@thasc,因为即使通常使用组合而不是继承可能是一个好习惯,创建Date类的扩展版本允许您直接在需要Date参数的方法中使用ExtendedDateObject。
答案 2 :(得分:1)
继承Date是一件麻烦事。 java.util.Date,java.util.Timestamp,java.sql.Date存在足够的混淆,而不会增加您自己的子类的复杂性。绝对采用静态方法方法。
请注意,您可能需要的某些功能可能已在commons-lang中实施。如果您的教师允许,那么您可能最好使用该库而不是遵循问题中的任何一个选项。
答案 3 :(得分:0)
我会选择第二种选择,原因如下
你可以说出来......像DateWithMinuteHandling一样,使命名混淆的可能性降低
答案 4 :(得分:-1)
考虑使用Joda-Time库进行日期/时间操作。