我见过使用静态方法的工厂实现。像这样的东西:
public class MyFactory {
public static Product1 createProduct1() {}
public static Product2 createProduct2() {}
}
p1 = MyFactory.createProduct1();
p2 = MyFactory.createProduct2();
我不确定我是否可以称它为抽象工厂,但这不是问题所在。我对抽象工厂的理解是,它使我们能够灵活地轻松更改产品系列。
Factory factory = new MyFactory(); // might be a global or Singleton
p1 = factory.createProduct1();
p2 = factory.createProduct2();
如果我想从 更改MyFactory
为YourFactory
则只需要更改一行。我也可以在运行时更改它。但是,如果它们被实现为静态方法,有可能吗?我需要更改对静态工厂的所有调用。如果我们想在运行时决定,还需要在每个地方使用 if-else 检查。
p1 = YourFactory.createProduct1();
p2 = YourFactory.createProduct2();
那么使用静态方法实现工厂有什么好处呢?我们不是失去了主要的灵活性吗?我在这里错过了什么?
请注意,没有假定特定的语言。任何帮助表示赞赏。