如何针对 SRP 设计 Validator class?
How to design Validator class in regards to SRP?
拥有一个验证器 class 是否更好,它具有诸如 validateUrl()、validateEmail()、validateInt() 等方法?
或者,URLValidator class、EmailValidator class 和 INTValidator class ?
虽然我同意这主要是基于意见,但我认为每个验证者应该有一个 class。否则你class的单一责任是什么?做所有的验证?正如建议的那样,您可以从一个完成所有操作的 Validator
开始,然后转向单独的 classes,或者您的验证器可以只是所有验证的外观,在单独的 classes 中进行特定验证.
至于静态问题,这可能取决于您需要在测试中存根这些验证器。在这种情况下,让它们保持静态会很痛苦。
我认为拆分通用验证逻辑(Validator
class)和具体验证逻辑(ValidationRule
class 及其后代)会更好。 Symfony 框架中就是这种情况。
在Validator
class中构建最常用的验证规则的方法在Laravel框架中使用,但我真的不喜欢它,因为它违反了SRP并使Validator
class 因不相关的逻辑而臃肿。
拥有一个验证器 class 是否更好,它具有诸如 validateUrl()、validateEmail()、validateInt() 等方法? 或者,URLValidator class、EmailValidator class 和 INTValidator class ?
虽然我同意这主要是基于意见,但我认为每个验证者应该有一个 class。否则你class的单一责任是什么?做所有的验证?正如建议的那样,您可以从一个完成所有操作的 Validator
开始,然后转向单独的 classes,或者您的验证器可以只是所有验证的外观,在单独的 classes 中进行特定验证.
至于静态问题,这可能取决于您需要在测试中存根这些验证器。在这种情况下,让它们保持静态会很痛苦。
我认为拆分通用验证逻辑(Validator
class)和具体验证逻辑(ValidationRule
class 及其后代)会更好。 Symfony 框架中就是这种情况。
在Validator
class中构建最常用的验证规则的方法在Laravel框架中使用,但我真的不喜欢它,因为它违反了SRP并使Validator
class 因不相关的逻辑而臃肿。