Почему Абстрактная Фабрика имеет дело с семействами, а Фабричный Метод - с генерацией одного объекта?
Из того, что я прочитал, абстрактный шаблон фабрики обычно связан с созданием нескольких объектов, которые все связаны с одним и тем же семейством, а шаблон фабричного метода касается создания одного объекта.
Рассмотрим следующий пример, который отражает эти проблемы:
// 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 - лучший подход к созданию единого объекта?