void WriteLogs(string message);
public class EventLog:ILogger
public void WriteLogs(string Message)
Console.WriteLine($"{Message} written to EventLog");
public class DBLog:ILogger
public void WriteLogs(string Message)
Console.WriteLine($"{Message} written to DBLog");
public abstract class LoggerFactory
public abstract ILogger MakeLogger();
public ILogger CreateLogger()
public class EventLogFactory:LoggerFactory
public override EventLog MakeLogger()
public class DBLogFactory:LoggerFactory
public override DBLog MakeLogger()
public static void Main()
EventLog logger1 = ((EventLog)new EventLogFactory().CreateLogger());
ClientCodeEvent(logger1);
DBLog logger2 = ((DBLog)new DBLogFactory().CreateLogger());
public static void ClientCodeEvent(EventLog logger)
logger.WriteLogs("Some log");
public static void ClientCodeDB(DBLog logger)
logger.WriteLogs("Some log");