Factory, реализованный статическим методом

Я видел реализацию Factory с использованием статических методов. Примерно так:

public class MyFactory {
    public static Product1 createProduct1() {}
    public static Product2 createProduct2() {}
}

p1 = MyFactory.createProduct1();
p2 = MyFactory.createProduct2();

Я не уверен, можно ли назвать это абстрактной фабрикой, но вопрос не в этом. Что я понимаю в Abstract Factory, так это то, что она дает нам возможность легко менять семейства продуктов.

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();

Так в чем же преимущество реализации фабрики с использованием статических методов? Не теряем ли мы основную гибкость? Что я здесь пропустил?

Обратите внимание, что конкретный язык не предполагается. Любая помощь приветствуется.

9
задан taskinoor 18 April 2011 в 14:28
поделиться