2017-08-17 39 views
0

假設有一個CarFactory class,它被classes擴展,如FerrariFactoryVolvoFactory。每個班級都有一個List<Car> build(List<CarPart>)方法正在擴展一個工廠類的反模式?

現在需要出現的是,對於任何給定的List<CarPart>必須返回汽車的最佳列表。

將邏輯放在CarFactory.build中是否會出現反模式?

CarFactory 
    List<Car> build(List<CarPart>) 
     split car part list into optimal car part sub-lists for each factory 
     instantiate car factories and pass in the sub-list of car parts 
     return collection of cars 

或者它會更好,有一個像CarBuilder類另一個類做到這一點?有沒有我可以用來解決這個問題的典型設計模式?

+1

Java中沒有'virtual'。 – RealSkeptic

+0

*最佳*是什麼意思? – TriskalJM

+0

每個部件都標有它應該去的工廠的類型,例如, 'VolvoPart'或'FerrariPart' – bafuda

回答

-1

我認爲,構建器中的任何邏輯都是反模式的,因爲實例化新對象應該非常快速而且相當。 我的意思是,在構建器中的最大代碼 - 只有一個運算符new ClassName(params...)。 如果您需要任何邏輯 - 將其移動到新的小類,解決這個問題:

List <Car> CarFactory.build (params...) { 
    return new CarLogicSolver(params).list(); 
} 

你可以看到在java.util.stream.Collectors.toSet,.toList,toMap等偉大的例子