当使用工厂模式时,工厂本身应该包含验证逻辑还是应该留给调用类在传递上下文数据之前负责验证?
我有一个简单的工厂方法,但它依赖于传递给它的配置树来决定要实例化的对象。
可能存在这样一种情况,配置 xml 可能格式正确,但格式不正确,我不知道应该在哪里验证。
最佳答案
When using the factory pattern, should the factory itsel contain validation logic or should that be left up to the calling classes to take care of validation before passing the context data in?
组织验证有两种不同的选择:
- 将验证作为一个单独的过程
有一个单独的验证方法Validate(Config)
。该方法在构造方法之前调用,返回Config
是否有效的信息。如果Validate
方法返回Config
有效,则调用构造方法。构建过程中的任何错误都被视为异常。
- 验证作为构建过程的一部分
没有单独的验证方法。相反,验证在需要时发生在构造方法内部。构造方法允许失败并返回构造对象或指示错误的结果。
第二种变体可以使用 monad 很好地实现,代码和性能开销几乎为零。
关于java - 工厂模式是否应该包含验证逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16221010/