¿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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta