结构设计模式



我使用三个独立的类:Group、Segment和Field。每个组是一个或多个段的集合,每个段是一个或者多个字段的集合。有不同类型的字段,它们是Field基类的子类。还有不同类型的段,它们都是Segment基类的子类。子类定义了段中预期的字段类型。在任何分段中,定义的某些字段必须输入值,而某些字段可以省略。我不确定将这个元数据存储在哪里(段中给定的字段是可选的还是强制性的。)

存储此元数据的最干净的方法是什么?

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

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

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

以上两种方法的好处是元数据在代码中,直接绑定到需要它的对象。缺点是,如果你想更改所需的字段,你需要更新代码并部署新的构建。

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

我认为,此类数据的最佳位置是普通的XML文件。对于处理此类数据,最好的结构也是带有XPATH的XMLDOM。上课太复杂了。

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

最新更新