结构设计模式

时间:2012-02-06 22:04:58

标签: java design-patterns

我正在使用三个单独的类:Group,Segment和Field。每个组是一个或多个段的集合,每个段是一个或多个字段的集合。 Field基类是子类的不同类型的字段。还有不同类型的段,它们都是Segment基类的子类。子类定义段中预期的字段类型。在任何段中,定义的某些字段必须输入值,而有些字段可以省略。我不确定存储此元数据的位置(段中的给定字段是可选的还是必需的。)

存储此元数据的最简洁方法是什么?

3 个答案:

答案 0 :(得分:1)

我不确定您是否提供有关完整应用程序的足够信息以获得最佳答案。然而,这里有一些可能的方法:

  1. 在基类中定义 isValid()方法,默认情况下返回true。在您的子类中,您可以为每个Segment或FieldType编写特定逻辑,以便在缺少任何需求时返回false。如果要报告错误消息以说明缺少哪些字段,可以向isValid方法添加List参数,以允许每种类型报告缺失值列表。

  2. 使用注释(如上面的AlexR所述)。

  3. 上述两种方法的好处是元数据在代码中,直接与需要它的对象相关联。缺点是如果要更改必填字段,则需要更新代码并部署新构建。

    如果您需要可以随时更改的内容,那么Gangus对Xml的建议是一个良好的开端,因为您的应用程序可以在运行时重新加载Xml定义并生成不同的验证结果。

答案 1 :(得分:0)

我认为,此类数据的最佳位置将是普通的XML文件。对于使用此类数据的工作,最佳结构也将是带有XPATH的XMLDOM。使用类太复杂了。

答案 2 :(得分:0)

自Java 5发布以来,可以使用注释来存储这种元数据。定义您自己的注释@MandatoryField并用它标记所有必填字段。然后,您可以使用反射逐个字段地发现对象,并检查在此情况下是否必须启动字段并抛出异常。