CSharp · Console
using System;
public class Program
{
public static void Main()
{
MyClass2 class2 = new MyClass2();
Logger1 log1 = new Logger1();
class2.Log += log1.Log;
Logger2 log2 = new Logger2();
class2.Log += log2.Log;
class2.DoSomeProcess();
}
public class MyClass2
{
public delegate void LogHandler(string message);
public LogHandler Log;
public void DoSomeProcess()
{
Log("Process Started");//class is not aware of logging implementation
/* Do the tasks **/
Log("Process Completed");//class is not aware of logging implementation
}
}
public class Logger1
{
public void Log(string message)
{
Console.WriteLine("Logger 1 (Disk) - "+message);
}
}
public class Logger2
{
public void Log(string message)
{
Console.WriteLine("Logger 2 (DB or web)- "+message);
}
}
}