我正在开发应用程序,我必须在某些 xmlbean 对象上编写自定义验证,基本上是为了查看具有正确值的某某字段是否存在。现在这些对象是从 diff 模式生成的。我正在使用 xmlbeans 提供的针对模式的验证,但是在进一步处理这些对象之前,还需要对这些对象进行更多的业务验证。有人可以为此用例建议任何设计模式吗?
谢谢
我正在开发应用程序,我必须在某些 xmlbean 对象上编写自定义验证,基本上是为了查看具有正确值的某某字段是否存在。现在这些对象是从 diff 模式生成的。我正在使用 xmlbeans 提供的针对模式的验证,但是在进一步处理这些对象之前,还需要对这些对象进行更多的业务验证。有人可以为此用例建议任何设计模式吗?
谢谢
定义自己的验证器接口:
interface Validator <T extends XmlBean> {
boolean validate(T bean);
}
为您正在处理的每个类实现它,您可以通过实现以下接口提供一个工厂类来获取每个 bean 类的验证器:
interface IValidatorFactory {
public <T extends XmlBean> Validator<T> getValidator(Class<T> clazz);
}
class ValidatorFactory implements IValidatorFactory {
private final Map<Class<? extends XmlBean>, Validator<? extends XmlBean>> map =
new HashMap<Class<? extends XmlBean>, Validator<? extends XmlBean>>();
@SuppressWarnings("unchecked")
@Override
public <T extends XmlBean> Validator<T> getValidator(Class<T> clazz) {
return (Validator<T>)map.get(clazz);
}
public <T extends XmlBean> void registerValidator(Class<T> clazz, Validator<T> validator) {
map.put(clazz, validator);
}
}
您可以将自己的自定义 pre-set 和 post-set 挂钩添加到生成的 XmlBeans 类中。要添加钩子,您需要创建一个.xsdconfig
文件并提供一些可以调用的静态方法preSet()
。postSet()
例如,请参见:
https://www.ibm.com/developerworks/xml/library/x-xmlbeanse/?ca=dgr-eclipse-1
并且: