Java “如何建模”;“目标日”;在UML类图中

Java “如何建模”;“目标日”;在UML类图中,java,uml,Java,Uml,我想在UML类图中描述以下情况: -targetDay:Integer -targetDayGrid:Enumeration 向顾客发送报纸的一天。这一天可以是“每周五”或“每个月的第一天” 我的想法是在UML类图中表示这一点: -targetDay:Integer -targetDayGrid:Enumeration targetDay可以是“1”(星期一)或“5”(星期五),也可以是“1”(月的第一天)或“10”(月的第十天) targetDayGrid是一个枚举:每周、每月 因此,枚举

我想在UML类图中描述以下情况:

-targetDay:Integer
-targetDayGrid:Enumeration
向顾客发送报纸的一天。这一天可以是“每周五”或“每个月的第一天”

我的想法是在UML类图中表示这一点:

-targetDay:Integer
-targetDayGrid:Enumeration
targetDay可以是“1”(星期一)或“5”(星期五),也可以是“1”(月的第一天)或“10”(月的第十天)

targetDayGrid是一个枚举:每周、每月


因此,枚举设置targetDay中数字的语义。我对此不满意,你知道任何其他解决方案来代表我的问题吗?或者你认为我的解决方案可以吗

在我看来,我会将两者分开,并使用两个枚举对类进行建模,如

public enum Day_Of_Week{ SUN, MON, TUE, WED, THU, FRI, SAT }

public enum Day_Of_Month{ 1, 2, .. , 31 }

这避免了对“星期几”的targetDay设置任何不正确的值>7这听起来有点过分,但我认为这里还需要三个类:targetDay是一个抽象类(或接口)、WeeklyTargetDay和MonthlyTargetDate,它们将提供不同的targetDay实现

将实际日期检索和该日期的计算彼此分离看起来确实是个好主意,但这不可能在所有情况下都适用,例如,当您想要预计算更多值时,您可以通过计算方法比逐个客户更有效地进行计算。这也将允许未来添加新方法(双周交付、节假日期间不同的交付模式…)。语义依赖于其他值的值可能是危险的。您还希望避免出现错误的数据,可以按照建议使用枚举,尤其是一周中的几天(不要忘记,不是每个月都有相同的长度,您需要一些带有检查的日期类,而不仅仅是枚举)。然而,如果你正在寻找最简单的解决方案,请尝试两个变量——一年中的一天和一天乘数(但别忘了,并非每年都有相同的天数……。

而且你不会遇到“每月的第一个星期五”这样的情况?不是现在,但可能以后……我正在考虑一个规则引擎。。。也许是个更好的主意。我正在考虑一个规则引擎。。。也许是个更好的主意。你需要一些属性来定义递归,这些属性取决于递归的性质。这通常是一个可以使用多态性(子类化/接口实现)解决的问题