我有这种情况:
有一个基本类型说它是一个文件。然后,几乎有100种类型的文档具有不同的属性。
例如:
BaseDoc:
PropA = null
PropB =defXyz
PropC = defCCC
Doc A: BaseDoc
PropA = true
PropB =Xyz
PropC = CCC
Doc B:BaseDoc
PropA = false
PropB =Xyz1
PropC = CCC1
现在这就是我对每个文档所做的工作,创建新类,然后添加其属性。但是现在我有100个文档,为每个文档创建100个类看起来很糟糕。
达到这种结果的最佳方法是什么。
如果有问题,我正在使用c#。
答案 0 :(得分:2)
基于对问题的评论,如果文档类型仅在属性值和验证规则方面有所不同,我将为所有文档使用一个类。
至于验证,我建议使用一个方法来创建一个验证器接口,该方法将接收文档并返回布尔值-并且让不同的类针对不同的文档类型实现此接口:
public interface IDocumentValidator
{
bool IsValid(Document document);
}
public class DocAValidator : IValidator
{
public bool IsValid(Document document)
{
// specific implementation for doc A
}
}
public class DocBValidator : IValidator
{
public bool IsValid(Document document)
{
// specific implementation for doc B
}
}
当然,如果您具有不同文档类型之间共有的部分验证,则可以创建一个基类来保存这些部分并避免代码重复:
public class CommonDocumentValidator : IValidator
{
public virtual bool IsValid(Document document)
{
// common validation rules here
}
}
,然后像这样继承此类:
public class DocAValidator : CommonDocumentValidator
{
public override bool IsValid(Document document)
{
if(!base.IsValid(document)) return false;
// specific implementation for doc A
}
}