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