Каковы недостатки Simple Factory по сравнению с шаблоном Factory Method и Pattern Abstract Factory соответственно? - PullRequest
1 голос
/ 12 июня 2019

Шаблоны проектирования первых конструкций описывает Simple Factory как

enter image description here

public class SimplePizzaFactory {
    public Pizza createPizza(String type) {
        Pizza pizza = null;
        if (type.equals(“cheese”)) {
            pizza = new CheesePizza();
        } else if (type.equals(“pepperoni”)) {
            pizza = new PepperoniPizza();
        } else if (type.equals(“clam”)) {
            pizza = new ClamPizza();
        } else if (type.equals(“veggie”)) {
            pizza = new VeggiePizza();
        }
        return pizza;
    }
}

Каковы недостатки Simple Factory по сравнениюв шаблон фабричного метода и абстрактный шаблон фабрики соответственно?

В Шаблоны проектирования Гаммы и др. параметризованные фабричные методы по классам в шаблоне фабричного метода выглядят аналогично простой фабрике.Верно ли, что параметризованная абстрактная фабрика будет именно простой фабрикой? Шаблоны проектирования упоминают о параметризованной абстрактной фабрике?

1 Ответ

1 голос
/ 12 июня 2019

Каковы недостатки простой фабрики по сравнению с шаблоном фабричного метода и шаблоном абстрактной фабрики соответственно?

Сравнение шаблона фабричной методики с абстрактным фабричным шаблоном не совсем верно, поскольку они служат разнымцели.Фабричный метод просто создает объект, в то время как Abstract Factory Pattern определяет интерфейс, через который вы можете создавать семейства объектов.Если я правильно помню, оба они описаны в книге, которую вы читаете.

Возвращаясь к недостаткам метода Simple Factory против Factory: когда мы говорим о шаблонах проектирования, это всегда вопрос того, как и как применить их к вашей конкретной проблеме, и это действительно зависит от случая к случаю.

Наличие класса фабрики для каждого типа объекта, который вы хотите создать, может усложнить ваш код, и у каждого семейства объектов будет рядом класс фабрики, так что вскоре ваш код может взорваться с Factory классы.Это единственный недостаток, который я знаю, если шаблон применяется правильно.Конечно, с другой стороны, метод Фабрики имеет и свои недостатки.Выбирая между ними, я всегда спрашиваю себя, кто является клиентом кода и что ему легче использовать.

В Design Patterns от Gamma et al. Параметризованные фабричные методы по классам в Factory Method Pattern кажутся похожими на Simple Factory.Верно ли, что параметризованная абстрактная фабрика будет именно простой фабрикой?Упоминаются ли шаблоны проектирования о параметризованной абстрактной фабрике?

Не совсем, но конкретные реализации фабрики AbstractFactory действительно будут выглядеть как простые фабрики.

Рекомендую вам также просмотреть другие статьи, мои личные предпочтения - это посты и лекции Зорана на абстрактной фабрике.Смотрите образец здесь: http://codinghelmet.com/articles/cascading-abstract-factories

...