变更管理和数据验证 在企业应用程序中更改数据格式是十分常见的情况。尽管 ISBN 和社会保障号的格式基本不变,但 IP 地址和 UPC 代码却不会一成不变。如果验证代码分散在整个应用程序中,那么您必须找到每个实例,并逐一更改它们,这个过程很繁琐,而且易于出错。另外,如果您漏改了一个或两个实例(这是人们常犯的错误),那么数据可能就最终被您自己的验证逻辑破坏!
合并验证逻辑 对跨多个业务委派中的多个业务方法使用相同的数据类型作为参数,这是十分常见的。例如,可以将一本书的 ISBN 传递给 Inventory 委派的搜索方法和 Payment 委派的采购方法。如果将验证逻辑与这两个业务委派(象上一篇技巧文章中的那样)联系在一起,那么最终这两个方法中都会有 ISBN 验证代码。
package com.ibm.validation;
import java.util.Iterator;
import java.util.List;
public class Validator {
public static void validateISBN(String isbn)
throws InvalidDataException {
// Check the data type, and throw an error if
// needed
}
public static void validateIPAddress(String ipAddress)
throws InvalidDataException {
// Check data type
}
public static void validateUPC(String upc)
throws InvalidDataException {
// Check data type
}
public static void validateUPC(float upc)
throws InvalidDataException {
validateUPC(new String(upc));
}
public static void validateList(List list, Class class)
throws InvalidDataException {
for (Iterator i = list.iterator(); i.hasNext(); ) {
Object obj = i.next();
if !(obj instanceof class) {
throw new InvalidDataException("This list only " +
"accepts objects of type " +
class.getName());
}
}
}
}