C# में डिज़ाइन पैटर्न कोड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# में डिज़ाइन पैटर्न: उदाहरणों के साथ पूरी गाइड



डिज़ाइन पैटर्न (Design Patterns) सॉफ़्टवेयर विकास में आने वाली सामान्य समस्याओं के सिद्ध समाधान हैं। .NET और C# इकोसिस्टम में पैटर्न का ज्ञान विशेष रूप से महत्वपूर्ण है, क्योंकि उनमें से कई सीधे प्लेटफ़ॉर्म में निर्मित हैं (उदाहरण के लिए, Dispose पैटर्न के लिए IDisposable)। इस लेख में, हम GoF (Gang of Four) वर्गीकरण के अनुसार पैटर्न के तीन मुख्य समूहों को C# पर व्यावहारिक उदाहरणों के साथ समझेंगे।



क्रिएशनल पैटर्न (Creational Patterns)



क्रिएशनल पैटर्न ऑब्जेक्ट बनाने के लिए जिम्मेदार होते हैं, जो सिस्टम को उनके निर्माण, संयोजन और प्रस्तुति के तरीके से स्वतंत्र बनाते हैं।



Singleton (सिंगलटन)



यह सुनिश्चित करता है कि क्लास का केवल एक इंस्टेंस हो, और उस तक वैश्विक पहुँच प्रदान करता है। C# में इसका उपयोग अक्सर लॉगर, कैश या कॉन्फ़िगरेशन के साथ काम करने के लिए किया जाता है।



public sealed class Logger{    private static readonly Lazy<Logger> _instance =         new Lazy<Logger>(() => new Logger());

public static Logger Instance => _instance.Value;

private Logger() { }

public void Log(string message) { Console.WriteLine($"[{DateTime.Now}] {message}"); }}

// उपयोगLogger.Instance.Log("एप्लिकेशन शुरू हुआ");


Factory Method (फ़ैक्टरी मेथड)



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



public interface ITransport{    void Deliver();}

public class Truck : ITransport{ public void Deliver() => Console.WriteLine("सड़क द्वारा डिलीवरी");}

public class Ship : ITransport{ public void Deliver() => Console.WriteLine("समुद्र द्वारा डिलीवरी");}

public abstract class Logistics{ public abstract ITransport CreateTransport();

public void PlanDelivery() { var transport = CreateTransport(); transport.Deliver(); }}

public class RoadLogistics : Logistics{ public override ITransport CreateTransport() => new Truck();}

public class SeaLogistics : Logistics{ public override ITransport CreateTransport() => new Ship();}

// उपयोगLogistics logistics = new RoadLogistics();logistics.PlanDelivery(); // सड़क द्वारा डिलीवरी


स्ट्रक्चरल पैटर्न (Structural Patterns)



स्ट्रक्चरल पैटर्न बड़ी संरचनाएँ बनाने के लिए क्लास और ऑब्जेक्ट बनाने के तरीके निर्धारित करते हैं।



Adapter (एडेप्टर)



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



// लक्ष्य इंटरफ़ेस (ITarget)public interface IXmlParser{    string ParseToXml(string data);}

// अनुकूलनीय क्लास (Adaptee)public class JsonParser{ public string ParseToJson(string data) { return $"{{\\"data\\": \\"{data}\\"}}"; }}

// एडेप्टरpublic class JsonToXmlAdapter : IXmlParser{ private readonly JsonParser _jsonParser;

public JsonToXmlAdapter(JsonParser jsonParser) { _jsonParser = jsonParser; }

public string ParseToXml(string data) { var json = _jsonParser.ParseToJson(data); // JSON से XML में सरल रूपांतरण return $"<data>{data}</data>"; }}

// उपयोगvar adapter = new JsonToXmlAdapter(new JsonParser());string xml = adapter.ParseToXml("Hello");Console.WriteLine(xml); // <data>Hello</data>


Decorator (डेकोरेटर)



यह किसी ऑब्जेक्ट में गतिशील रूप से नई जिम्मेदारियाँ जोड़ता है। C# में यह पैटर्न अक्सर इनहेरिटेंस या कम्पोज़िशन के माध्यम से लागू किया जाता है।



public interface INotifier{    void Send(string message);}

public class E

ब्लॉग

पुस्तक अनुशंसाएँ