Factory Method
Variante con un único creador parametrizado en lugar de subclases.
#Cuándo usarla
Cuando las variantes son cerradas y conocidas, no tiene sentido crear una subclase por cada una.
#Ejemplo en C#
public enum Channel { Email, Sms, Push }
public class NotificationFactory
{
public INotification Create(Channel channel) => channel switch
{
Channel.Email => new EmailNotification(),
Channel.Sms => new SmsNotification(),
Channel.Push => new PushNotification(),
_ => throw new ArgumentOutOfRangeException(nameof(channel)),
};
}Cuándo NO aplicarlo
Cuando aparecen variantes nuevas con frecuencia: cada case es una modificación que rompe OCP.
#creational #factory