खोज…


समग्र लकड़हारा

समग्र पैटर्न एक डिजाइन पैटर्न है जो ऑब्जेक्ट के एकल उदाहरण के रूप में वस्तुओं के एक समूह का इलाज करने की अनुमति देता है। यह गैंग ऑफ़ फोर के स्ट्रक्चरल डिज़ाइन पैटर्न में से एक है।

नीचे दिए गए उदाहरण में दिखाया गया है कि कैसे एकल लॉग इनवॉइस का उपयोग करके कई स्थानों पर लॉग इन किया जा सकता है। यह दृष्टिकोण SOLID सिद्धांतों का पालन करता है क्योंकि यह आपको एकल जिम्मेदारी सिद्धांत का उल्लंघन किए बिना नए लॉगिंग तंत्र को जोड़ने की अनुमति देता है (प्रत्येक लकड़हारे के पास केवल एक जिम्मेदारी है) या ओपन / बंद सिद्धांत (आप नए लकड़हारे को जोड़ सकते हैं जो नए कार्यान्वयन को जोड़कर नए स्थान पर प्रवेश करेगा मौजूदा लोगों को संशोधित करके नहीं)।

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

यह ध्यान देने योग्य है कि कंपोजिट लॉगर्स को नेस्टेड किया जा सकता है (कंपोजिट लॉगर्स कंस्ट्रक्टर के मापदंडों में से एक पेड़ के समान संरचना का निर्माण करने वाला एक अन्य कंपोजर हो सकता है)।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow