Zoeken…


Composiet logger

Het samengestelde patroon is een ontwerppatroon waarmee een groep objecten als een enkele instantie van een object kan worden behandeld. Het is een van de structurele ontwerppatronen van de Gang of Four.

Het onderstaande voorbeeld laat zien hoe Composite kan worden gebruikt om naar meerdere plaatsen te loggen met behulp van een enkele logoproep. Deze aanpak houdt vast aan SOLID-principes, omdat u hiermee een nieuw loggingmechanisme kunt toevoegen zonder het principe van Single verantwoordelijkheid te schenden (elke logger heeft slechts één verantwoordelijkheid) of Open / closed-principe (u kunt een nieuwe logger toevoegen die naar een nieuwe locatie logt door een nieuwe implementatie toe te voegen en niet door bestaande aan te passen).

public interface ILogger
{
    void Log(string message);
}

public class CompositeLogger : ILogger
{
    private readonly ILogger[] _loggers;

    public CompositeLogger(params ILogger[] loggers)
    {
        _loggers = loggers;
    }

    public void Log(string message)
    {
        foreach (var logger in _loggers)
        {
            logger.Log(message);
        }
    }
}

public class ConsoleLogger : ILogger
{
    public void Log(string message)
    {
        //log to console
    }
}

public class FileLogger : ILogger
{
    public void Log(string message)
    {
        //log to file
    }
}

var compositeLogger = new CompositeLogger(new ConsoleLogger(), new FileLogger());
compositeLogger.Log("some message"); //this will be invoked both on ConsoleLogger and FileLogger

Het is vermeldenswaard dat samengestelde loggers kunnen worden genest (een van de parameters voor de constructor van samengestelde loggers kan een andere samengestelde logger zijn) waardoor een boomachtige structuur ontstaat.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow