2017-08-17 179 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等伟大的例子