OO设计模式用于验证

Pet*_*kas 14 oop design-patterns

我正在根据这些假设编写一些验证代码:

  • 验证码必须在外部类中
    • 即没有数据类包含它自己的验证
  • 可以以不同方式验证相同的对象
    • 例如只验证语法; 验证数据库查找; 验证重复; 等等
  • 验证输出可能会根据需要而有所不同
    • 例如,输出单个错误消息; 输出所有验证错误的列表; 类似但以JSON格式包含错误代码; 等等

OO设计模式的哪些组合最能解决这个问题?工厂可能是获得特定验证器的好方法,但它们是更好的方法吗?

Woj*_*ski 9

一种尺寸不适合所有!简单一点!

为验证器提供通用方法/接口以输出数据,对警告进行分类,过滤/处理多次引发的警告.不要创建任何复杂的验证方法,至少在编写一些现实生活验证器之前.

走开,让验证人做他们应该做的事情: __CODE__.A __CODE__实际上定义为:

for validator in all_validators:
    validator.validate(model)
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用__CODE__生成GUID.这是一些示例代码:

for validator in all_validators:
    validator.validate(model)
Run Code Online (Sandbox Code Playgroud)

警告

不是GUID的东西将作为有效GUID返回.例如:

for validator in all_validators:
    validator.validate(model)
Run Code Online (Sandbox Code Playgroud)

这意味着除了返回您不期望的结果之外,该函数每次运行时都会命中注册表.

简短版本:不要使用CLSIDFromString.相反,你可以使用__CODE__完全相同的方式.