public interface INotification
void Send(string message);
public interface INotificationFactory
INotification CreateEmailNotification();
INotification CreateSmsNotification();
public class WindowsNotificationFactory : INotificationFactory
public INotification CreateEmailNotification() => new WindowsEmailNotification();
public INotification CreateSmsNotification() => new WindowsSmsNotification();
public class WindowsEmailNotification : INotification
public void Send(string message) => Console.WriteLine($"Windows Email sent: {message}");
public class WindowsSmsNotification : INotification
public void Send(string message) => Console.WriteLine($"Windows SMS sent: {message}");
public class WebNotificationFactory : INotificationFactory
public INotification CreateEmailNotification() => new WebEmailNotification();
public INotification CreateSmsNotification() => new WebSmsNotification();
public class WebEmailNotification : INotification
public void Send(string message) => Console.WriteLine($"Web Email sent: {message}");
public class WebSmsNotification : INotification
public void Send(string message) => Console.WriteLine($"Web SMS sent: {message}");
INotificationFactory factory = new WindowsNotificationFactory();
var emailNotification = factory.CreateEmailNotification();
emailNotification.Send("Hello via Windows Email!");
var smsNotification = factory.CreateSmsNotification();
smsNotification.Send("Hello via Windows SMS!");
factory = new WebNotificationFactory();
var webEmailNotification = factory.CreateEmailNotification();
webEmailNotification.Send("Hello via Web Email!");
var webSmsNotification = factory.CreateSmsNotification();
webSmsNotification.Send("Hello via Web SMS!");