此验证代码使用的设计模式的名称是什么?

问题描述 投票:0回答:1

我发现直接在出现的异常类中直接实现验证很方便:

>>> class IsNoneError(ValueError):
...     @classmethod
...     def validate(cls, value):
...         if value is None:
...             raise cls
... 
>>> IsNoneError.validate(1)
>>> IsNoneError.validate(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in validate
__main__.IsNoneError

我要询问的模式是如果验证失败,则会在异常类中嵌入验证例程。当我尝试在代码中使用单一责任原则时,我需要为每个失败设置一个单独的异常,然后通过一个单独的模块将其转换为任意自然语言的消息。按照该模式,我可以将所有验证代码放在一个位置。

由于在阳光下没有什么新事物,我想有人已经发明了这种异常验证器类模式。那它叫什么名字,我可能会用它与其他python专家交谈来理解?

此外,此设计模式可能有哪些缺点?

python exception design-patterns terminology
1个回答
0
投票

这很可能适合design by contract,因为您的代码充当guard

© www.soinside.com 2019 - 2024. All rights reserved.