我们必须验证包含各种配置参数的CSV文件。是否有任何标准设计模式可以进行此类验证。
更多详情:
答案 0 :(得分:2)
您可以使用Strategy模式验证记录。有一个抽象基类来表示Record,你可以使用
Factory Method或 Simple Factory 创建各种记录类型的具体实例
您的规格不完整。以下是实现策略模式的代码示例
对你的记录有一个简单的假设。
interface Validator {
// since it is not clear what are the attributes that matter for a record,
// this takes an instance of Record.
// Modify to accept relevant attribures of Record
public boolean validate (Record r);
}
class ConcreteValidator implements Validator {
// implements a validation logic
}
// implements Comparable so that it can be used in rules that compare Records
abstract class Record implements Comparable<Record> {
protected Validator v;
abstract void setValidator(Validator v);
public boolean isValid() {
return v.validate(this);
}
}
class ConcreteRecord extends Record {
// alternatively accept a Validaor during the construction itself
// by providing a constructor that accepts a type of Validator
// i.e. ConcreteRecord(Validator v) ...
void setValidator(Validator v) {
this.v = v;
}
// implementation of method from Comparable Interface
public int compareTo(final Record o) {... }
}
public class Test {
public static void main(String[] args) {
// Store the read in Records in a List (allows duplicates)
List<Record> recordList = new ArrayList<Record>();
// this is simplistic. Your Record creation mode might be
// more complex, And you can use a Factory Method
// (or Simple Factory) for creation of ConcreteRecord
Record r = new ConcreteRecord();
r.setValidtor(new ConcretedValidator());
if (r.isValid()) {
// store only valid records
recordList.add(r);
}
// do further processing of Records stored in recordList
}
}
答案 1 :(得分:0)
模板模式可能会有所帮助: http://en.wikipedia.org/wiki/Template_method_pattern
您为一般术语的验证设置了一个脚手架,然后将算法交给一个知道如何在不同点处理细节的委托。
答案 2 :(得分:0)
我知道我的一位朋友使用JBOSS DROOLS来验证此类文件。