java - 工厂模式是否应该包含验证逻辑

标签 java design-patterns factory

当使用工厂模式时,工厂本身应该包含验证逻辑还是应该留给调用类在传递上下文数据之前负责验证?

我有一个简单的工厂方法,但它依赖于传递给它的配置树来决定要实例化的对象。

可能存在这样一种情况,配置 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?

组织验证有两种不同的选择:

  1. 将验证作为一个单独的过程

有一个单独的验证方法Validate(Config)。该方法在构造方法之前调用,返回Config是否有效的信息。如果Validate 方法返回Config 有效,则调用构造方法。构建过程中的任何错误都被视为异常。

  1. 验证作为构建过程的一部分

没有单独的验证方法。相反,验证在需要时发生在构造方法内部。构造方法允许失败并返回构造对象或指示错误的结果。

第二种变体可以使用 monad 很好地实现,代码和性能开销几乎为零。

关于java - 工厂模式是否应该包含验证逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16221010/

相关文章:

c++ - 由于缺乏反射,在 C++ 中不可避免地会有一个大的 switch block 吗?

ruby-on-rails - RSPEC 和工厂女孩 SystemStackError : stack level too deep

design-patterns - 为这组对象寻找一个好的设计模式

c++ - 酒店预订系统的面向对象设计

css - 表格行上的背景图案重复

javascript - JS : How do create prototypes when creating factory functions rather than classes?

java - Play Framework 中同一实体上的 ManyToMany

c# - apache 中解释语言的工作

java - 如何通过 it 属性为枚举设置一些值

java - 带有附加到 Design Element 的 jar 的 Domino Java 代理会导致 OutOfMemory 错误