Почему Абстрактная Фабрика имеет дело с семействами, а Фабричный Метод - с генерацией одного объекта?

Из того, что я прочитал, абстрактный шаблон фабрики обычно связан с созданием нескольких объектов, которые все связаны с одним и тем же семейством, а шаблон фабричного метода касается создания одного объекта.

Рассмотрим следующий пример, который отражает эти проблемы:

// Factory Method (base class) allowing for creation of families of objects
public class BasePizzaCreator{
    abstract ISauce CreateSauce();
    abstract IToppings CreateToppings();
    abstract ICrust CreateCrust();
}

// Abstract Factory (interface) defining contract to create a single object
public interface IPizzaFactory{
    abstract IPizza CreatePizza();
}

Очевидно, что тыМожно использовать их таким образом - но является ли это нарушением духа шаблонов? Если так, то почему?

Вот что я действительно хочу понять, так это то, почему Abstract Factory - лучший подход для создания семейств связанных объектов, а метод Factory - лучший подход к созданию единого объекта?

Ответы на вопрос(2)

Ваш ответ на вопрос