以下是我的服务层的代码
@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/