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