#region Strategies public enum LoggingStrategy { Console, Trace } #endregion #region Service public class LoggingService { private readonly Dictionary<LoggingStrategy, ILogger> _strategies = new Dictionary<LoggingStrategy, ILogger>(); public LoggingService() { DefineStrategies(); } public void LogMessage(LoggingStrategy strategy, string message) { _strategies[strategy].LogMessage(message); } public void LogError(LoggingStrategy strategy, string errorMessage) { _strategies[strategy].LogMessage(errorMessage); } private void DefineStrategies() { _strategies.Add(LoggingStrategy.Console, new ConsoleLogger()); _strategies.Add(LoggingStrategy.Trace, new TraceLogger()); } } #endregion #region Loggers public interface ILogger { void LogMessage(string message); void LogError(string errorMessage); } public class ConsoleLogger : ILogger { public void LogMessage(string message) { System.Console.WriteLine(String.Format("Message: {0}", message)); } public void LogError(string errorMessage) { System.Console.WriteLine(String.Format("Error: {0}", errorMessage)); } } public class TraceLogger : ILogger { public void LogMessage(string message) { System.Diagnostics.Trace.WriteLine(String.Format("Message: {0}", message)); } public void LogError(string errorMessage) { System.Diagnostics.Trace.WriteLine(String.Format("Error: {0}", errorMessage)); } }
0