Recherche…


Enregistreur composite

Le motif composite est un motif de conception permettant de traiter un groupe d’objets en tant qu’instance unique d’un objet. C'est l'un des modèles de conception structurelle du Gang of Four.

L'exemple ci-dessous montre comment Composite peut être utilisé pour se connecter à plusieurs endroits en utilisant un appel de journal unique. Cette approche respecte les principes SOLID car elle vous permet d’ajouter un nouveau mécanisme de journalisation sans violer le principe de responsabilité unique (chaque enregistreur n’a qu’une seule responsabilité) ou principe Open / closed (vous pouvez ajouter un nouveau logger au nouvel emplacement en ajoutant une nouvelle implémentation). pas en modifiant ceux existants).

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

Il convient de mentionner que les enregistreurs composites peuvent être imbriqués (l’un des paramètres du constructeur des enregistreurs composites peut être un autre enregistreur composite) créant une structure arborescente.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow