【发布时间】:2021-05-31 15:02:24
【问题描述】:
这个问题是关于Java Enums的重用
假设我有一个枚举
public enum Days {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY SATURDAY, SUNDAY
}
现在,在一个业务用例中,我还需要将今天、明天和昨天视为日子。虽然它们是相关的概念,但将它们放在同一个枚举中感觉不对。
我们是否应该创建一个新的枚举,或者是否有任何理由重载相同的 Days 枚举并在其中添加这 3 个值。
public enum Days {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY SATURDAY, SUNDAY, TODAY, TOMORROW, YESTERDAY
}
更新1: 上面的枚举只是为了提出用例而已。 我在代码库中的枚举是特定于业务的,但想法是新枚举值在上面的示例中以类似的模糊类型相关,但它们肯定属于不同的值集。
【问题讨论】:
-
不要重新发明轮子(再次)。使用
java.time中的类。见DayOfWeek.plus(long)。 -
我建议使用不同的枚举,因为 2 具有不同的含义。尽管它们都指的是天,但它们与不同的事物相关:工作日与一周相关,而昨天等与当天相关。也可以这样想:一组数据的枚举值,因此一条数据只能有一个值(例如工作日)。如果您将工作日和 TODAY 之类的偏移量混合在一起,那么“今天”可能有 2 个含义:今天和星期一。
-
从该提议的枚举看来,TOMORROW 似乎不是星期一、星期二、星期三、星期四、星期五、星期六或星期日之一。换句话说,不,我可能不会那样做。
-
@Elliot :上面的枚举只是为了提出用例而已。我在代码库中的枚举是特定于业务的,而不是工作日:),但想法是新的枚举值在上面的示例中以类似的模糊类型相关
标签: java oop design-patterns enums