首先,我假设你正在创建从ServiceAgreementFactory
的Transportation
列表?如果是这样,调用get()
方法的位置并不重要。通常,工厂有一个实例化一个实例的方法,实例化一个列表的方法只是该方法的一个循环。
对工厂使用静态方法没有任何问题。就个人而言,我更喜欢为工厂声明一个接口并提供默认实现。这样,使用工厂的代码仅耦合到接口而不是实现。
一个例子如下。
public interface ServiceAgreementFactory {
Transportation get(SaveTransportationCommand command);
default List<Transportation> getList(SaveTransportationCommand command) {
// loop to call get(SaveTransportationCommand)
}
}
public class DefaultServiceAgreementFactory implements ServiceAgreementFactory {
Transportation get(SaveTransportationCommand command) {
// instantiating code
}
}
至于验证,你可以在工厂做。示例如下。
public class DefaultServiceAgreementFactory implements ServiceAgreementFactory {
Transportation get(SaveTransportationCommand command) {
// validation code
if (validation fails) {
// throw exception
}
// instantiating code
}
}
正如之前的文章所暗示的那样,抽象出验证代码会更清晰。
你能格式化你的代码吗? – prasanth
完成格式化代码 – Rajan