是否将工厂类扩展为反模式?

时间:2017-08-17 13:08:54

标签: java oop design-patterns factory builder

假设有一个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 个答案:

答案 0 :(得分:-1)

我认为,构建器中的任何逻辑都是反模式的,因为实例化新对象应该非常快且相当。 我的意思是,构建器中的最大代码 - 只有一个运算符new ClassName(params...)。 如果你需要任何逻辑 - 将它移动到新的小类,解决这个问题:

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

你可以在java.util.stream.Collectors.toSet,.toList,toMap等中看到很好的例子。