Ricerca…


Logger composito

Il pattern Composite è un pattern di progettazione che consente di trattare un gruppo di oggetti come una singola istanza di un oggetto. È uno dei modelli di progettazione strutturale di Gang of Four.

L'esempio seguente mostra come può essere utilizzato Composite per accedere a più posti utilizzando la chiamata al singolo registro. Questo approccio aderisce ai principi SOLID perché consente di aggiungere nuovi meccanismi di registrazione senza violare il principio di Responsabilità singola (ogni registratore ha una sola responsabilità) o principio Aperto / chiuso (È possibile aggiungere un nuovo logger che effettuerà il log in nuovo posto aggiungendo nuova implementazione e non modificando quelli esistenti).

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

Vale la pena ricordare che i logger compositi possono essere nidificati (uno dei parametri per il costruttore di logger compositi può essere un altro logger composito) che crea una struttura ad albero.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow