¿Por qué Abstract Factory trata con familias y Factory Method genera un solo objeto?
Por lo que he leído, el patrón de fábrica abstracto generalmente se ocupa de crear varios objetos que están asociados con la misma familia, y el patrón del método de fábrica se ocupa de generar un solo objeto.
Considere el siguiente ejemplo, que voltea esas preocupaciones:
// 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();
}
Es obvio que ustedpuede úselos de esta manera, pero ¿es una violación del espíritu de los patrones? Si es así, ¿por qué?
Lo que realmente quiero entender aquí es esto: ¿por qué Abstract Factory es el mejor enfoque para crear familias de objetos relacionados, y el método Factory es el mejor enfoque para crear un solo objeto?