java - 创建Factory来创建领域对象的正确方法

标签 java design-patterns factory-pattern

以下是我的服务层的代码

@Override
    public Boolean saveTransportation(SaveTransportationCommand addServiceCommand)  {
        return getServiceAgreementDao().saveTransportation((List<Transportation>)ServiceAgreementFactory.get(addServiceCommand));
}

我正在尝试从命令对象创建域对象,我可以在工厂中从命令进行验证并设置值吗?我的方法是否正确,或者我应该使用工厂仅创建对象。

最佳答案

工厂用于创建对象。在我看来,在创建对象之前在工厂方法中进行验证和设置值并不是犯罪。如果您太关心工厂做这些事情(如果您希望工厂松散耦合),您可以拥有一个 Validator 接口(interface)并将其作为参数传递给 Factory。在 get 方法中,您首先进行验证。如果验证返回 true,则实例化该对象,否则抛出异常。

public interface Validator {
   boolean validate(SaveTransportationCommand command);
}

修改 ServiceAgreementFactory.get() 以同时接收 Validator

public class ServiceAgreementFactory {

  List<Transportation> get(SaveTransportationCommand command, Validator validator) {
      if(!validator.validate(command)) {
        // throw Exception
      }
  }
}

关于java - 创建Factory来创建领域对象的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43303211/

相关文章:

java - 即使类路径中存在所需的类,也会引发 NoClassDefFoundError

java - 如何使Java ServiceActivator在JUnit Test中可见?

独立访问器/修改器接口(interface)的 C++ 设计模式

design-patterns - mixin 被认为是一种设计模式吗?

java - 什么样的设计模式适合我的需要?

c++ - 具有共享指针和受限构造函数的工厂方法的问题

java - Solr 4.1 核心初始化失败

c# - 使用 Ninject 的参数化工厂

java - Java 工厂模式的返回类型

java - 找出用于在 Java 中实例化模板的类型