gpt4 book ai didi

design-patterns - 数据验证设计模式

转载 作者:行者123 更新时间:2023-12-03 23:18:42 25 4
gpt4 key购买 nike

如果我有一组数据库表(例如,在 Access 文件中),并且需要根据一个规则集验证该集合中的每个表,该规则集具有跨所有表的通用规则以及特定于一个或一个子集的单个规则表,有人可以推荐一个好的设计模式来研究吗?

具体来说,我想避免类似的代码:

void Main()
{
ValidateTable1();
ValidateTable2();
ValidateTable3();
}

private void ValidateTable1()
{
//Table1 validation code goes here
}

private void ValidateTable2()
{
//Table2 validation code goes here
}

private void ValidateTable3()
{
//Table3 validation code goes here
}

另外,我决定使用 log4net 来记录所有错误和警告,以便可以声明每个方法 void并且不需要返回任何东西。这是个好主意还是创建某种 ValidationException 更好?捕获所有异常并将它们存储在 List<ValidationException> 中在最后打印出来之前?

我确实找到了 this ,看起来它可能有效,但我希望能真正找到一些代码示例来解决。有什么建议么?过去有没有人做过类似的事情?

对于某些背景,该程序将使用 C# 或 VB.NET 编写,并且表很可能存储在 Access 或 SQL Server CE 中。

最佳答案

只是对此的更新:我决定使用 Decorator pattern .也就是说,我有一个实现 IValidateableTable 的“通用”表类。接口(interface)(包含 validate() 方法)。然后,我创建了几个验证装饰器(也是 implement IValidateableTable ),我可以将它们包裹在我要验证的每个表周围。

所以,代码最终看起来像这样:

IValidateableTable table1 = new GenericTable(myDataSet);
table1 = new NonNullNonEmptyColumnValidator(table1, "ColumnA");
table1 = new ColumnValueValidator(table1, "ColumnB", "ExpectedValue");

然后,我需要做的就是调用 table1.Validate()它通过调用所有需要的验证的装饰器展开。到目前为止,它似乎工作得很好,尽管我仍然愿意接受建议。

关于design-patterns - 数据验证设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com