Your application uses a logging interface, but you want to integrate a third-party logging library with a different interface.
using System;
namespace AdapterPatternExample
{
// Target Interface
public interface ILogger
{
void Log(string message);
}
// Adaptee (Third-Party Logger)
public class ThirdPartyLogger
{
public void WriteLog(string logMessage)
{
Console.WriteLine($"ThirdPartyLogger: {logMessage}");
}
}
// Adapter
public class LoggerAdapter : ILogger
{
private readonly ThirdPartyLogger _thirdPartyLogger;
public LoggerAdapter(ThirdPartyLogger thirdPartyLogger)
{
_thirdPartyLogger = thirdPartyLogger;
}
public void Log(string message)
{
_thirdPartyLogger.WriteLog(message);
}
}
// Client
class Program
{
static void Main(string[] args)
{
ThirdPartyLogger thirdPartyLogger = new ThirdPartyLogger();
ILogger logger = new LoggerAdapter(thirdPartyLogger);
logger.Log("This is a log message.");
}
}
}