首先,我假設你正在創建從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