我发现直接在出现的异常类中直接实现验证很方便:
>>> 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专家交谈来理解?
此外,此设计模式可能有哪些缺点?
这很可能适合design by contract,因为您的代码充当guard。