工厂模式是否仅使用默认构造函数创建对象

时间:2013-04-10 19:36:01

标签: java design-patterns graph factory-pattern

我需要你的帮助 我有一个复杂的网络表示为超图
超图顶点有各种类型:图像,标签....
我应该创建数千个顶点
手动创建它很难!
所以我认为工厂模式可能在这种情况下帮助我 但是每个顶点类型都有其特定的属性,我应该将它作为参数传递给构造函数

所以工厂方法在这种情况下是正确的选择吗? quick diagram

2 个答案:

答案 0 :(得分:3)

具有创建方法的工厂没有任何问题,该方法需要一个或多个参数

Car blueCar = carFactory.create(CarColor.BLUE);
Car redCar = carFactory.create(CarColor.RED);

或具有多种创建方法的工厂:

Car blueCar = carFactory.createBlueCar();
Car redCar = carFactory.createRedCar();

作为工厂的替代品,根据用例可能也值得考虑的是Builder模式。 Builder只有一个没有参数的create方法,但它也有一些方法可以设置由它创建的对象的属性:

carBuilder.setColor(CarColor.BLUE);
Car blueCar = carBuilder.create();
carBuilder.setColor(CarColor.RED);
Car redCar = carBuilder.create();

create方法如何在内部实际创建对象是一个留给自己的实现细节。它可以,例如:

  • 使用参数
  • 调用构造函数
  • 调用默认构造函数,然后在返回的对象上调用一些setter来更改其属性
  • 根据参数
  • 实例化不同的子类
  • 或这些选项的组合

答案 1 :(得分:0)

工厂方法通常用于创建对象,而无需指定将要创建的对象的确切类。

如果你有不同的顶点实现,这可能是你的选择。