【发布时间】:2011-04-29 20:24:02
【问题描述】:
我正在为系统建模一个文档类。文档可以是以下两种类型之一:in 或 out。
如果类型是in,则文档有一个发件人。发件人可以是以下两种类型之一:个人或公司。
如果类型是out,则文档有接收者。接收者可以是以下三种类型之一:个人、公司、部门。
我不确定是使用带有文档类型枚举的属性还是使用带有文档基类和每个文档类型两个类的层次结构更好。
对于发送者和接收者,我不确定层次结构是否是一个好的选择,因为这三种类型没有任何共同点(个人、公司、部门)以及如何避免无效的发送者。
如果你能给我一些关于如何建模文档类的建议,或者如果 你可以告诉我一些我应该使用的设计模式。
提前致谢。
in 和 out 之间只有很少的区别,除了发送者和接收者之外,相同的字段。此外,行为是相同的,只是略有变化。
发送者和接收者没有行为,他们唯一需要做的就是包含正确的对象,例如发送者可以包含一个人或一个公司,但没有一个部门,因为部门不是有效的发送者。此外,如果发件人包含一个人,则它不能包含公司,因为只接受一个发件人。
主要问题是当我获取文档时如何读取发送方或接收方,而我必须读取该数据。例如,如果我必须读取发件人并且我使用枚举类型的发件人,我必须执行这样的代码 if sender==person 读取人员并将其分配给其他人读取公司并分配给公司。如果我使用继承,我如何避免使用演员表,或者我如何知道发件人是没有这么多代码或演员表的人或公司。再次感谢。
【问题讨论】:
-
您打算对这些文档进行哪些操作?它们如何依赖于 IN/OUT 等。
-
@Fdo。 - 我第二个@Andrei 的问题。具体来说,当您有一个文档时,您通常会在编译时知道它是输入文档还是输出文档?或者您将主要在运行时处理文档类型(输入/输出)?
-
Andrei,我必须在根据类型、发件人或收件人进行一些验证后保存文档的信息。另外,我必须得到文件。
-
斯蒂芬,我在运行时就知道了。
-
@Andrei,根据类型、发件人或收件人,我必须在经过一些验证后保存文档的信息。我也必须得到文件。谢谢。