Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 48

Singleton Pattern

Singleton pattern क्या है

Singleton pattern पक्का करता है कि class का पूरे program को सिर्फ़ एक object हो, और उस तक पहुँचने का एक साफ़ तरीका देता है। यह classic design pattern तब इस्तेमाल होता है जब ठीक एक साझा instance अर्थपूर्ण हो — जैसे एक database connection या settings manager।

💡 Singleton = पूरे program को एक object, साझा getInstance() method से पहुँचा।

इसे क्यों इस्तेमाल करें

  • एक साझा resource — एक database connection, cache या logger।
  • संगत state — सब वही object इस्तेमाल करते हैं, तो data sync रहता है।
  • नियंत्रित access — creation एक जगह होती है जिसे आप control करते हैं।

यह किसी भी स्थिति को fit होता है जहाँ कई objects बनाना बेकार या गलत होगा।

Java program

class Database {
    private static Database instance;   // single object

    private Database() {                // private constructor
        System.out.println("Database created");
    }

    public static Database getInstance() {
        if (instance == null) {         // सिर्फ़ एक बार बनाओ
            instance = new Database();
        }
        return instance;                // हमेशा वही object
    }
}

public class Main {
    public static void main(String[] args) {
        Database db1 = Database.getInstance();
        Database db2 = Database.getInstance();
        System.out.println(db1 == db2);  // वही object?
    }
}
Database created
true

ध्यान दीजिए "Database created" सिर्फ़ एक बार print होता है, और db1 == db2 true है — दोनों variables बिल्कुल वही object की ओर इशारा करते हैं।

Dry run

Dry Run — Singleton: sirf EK object banta hai
StepCallinstance == null?Kya hua
1getInstance() (db1)haan (pehli baar)naya Database banaya, instance me store
2getInstance() (db2)nahi (pehle se hai)wahi purana instance return
db1 aur db2 ek hi object hain → db1 == db2 is true
💡 ऐसे समझिए

पहली getInstance() पाती है instance null है, तो object बनाती है। हर बाद वाली call पाती है वो पहले से है और वही return करती है — तो कभी सिर्फ़ एक object रहता है।

तीन मुख्य हिस्से

  1. Private static field — single instance रखता है।
  2. Private constructor — दूसरों को new इस्तेमाल से रोकता है।
  3. Public static getInstance() — एक बार बनाता है, हमेशा return करता है।

साथ में ये तीन ठीक एक object की गारंटी देते हैं, हर जगह एक ही तरीके से पहुँचा।

Thread safety नोट

ऊपर वाला सरल version thread-safe नहीं है: दो threads एक साथ getInstance() call करते हुए दोनों instance == null देख सकते हैं और दो objects बना सकते हैं। Multithreaded code को, getInstance() को synchronized बनाइए, eager instance इस्तेमाल कीजिए, या enum singleton इस्तेमाल कीजिए।

आम गलतियाँ

  • Public constructor। इसे private बनाइए, वरना दूसरे और objects बना सकते हैं।
  • Null जाँच भूलना। इसके बिना, हर call नया object बनता है।
  • Thread safety अनदेखा करना। Multithreaded इस्तेमाल को synchronization जोड़िए।
  • Singletons का ज़्यादा इस्तेमाल। बहुत global state code test करना मुश्किल बनाता है।

सारांश

  • Singleton pattern class का सिर्फ़ एक object allow करता है।
  • Private constructor, static instance, और getInstance() इस्तेमाल कीजिए।
  • getInstance() object एक बार बनाकर हर बार return करता है।
  • यह connection या configuration जैसे साझा resources को fit होता है।
  • बुनियादी version को thread-safe होने को अतिरिक्त सावधानी चाहिए।

आगे, objects दोहराइए classes और objects में, या static keyword जिस पर यह निर्भर है।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Singleton pattern क्या है?
Singleton pattern पक्का करता है कि class का पूरे program को सिर्फ़ एक object (instance) हो, उस तक पहुँच का एक ही बिंदु के साथ। यह तब इस्तेमाल होता है जब ठीक एक साझा object अर्थपूर्ण हो, जैसे database connection या configuration manager।
Java में Singleton कैसे बनाऊँ?
constructor private बनाइए (ताकि कोई और objects न बना सके), single instance का static reference रखिए, और एक static getInstance() method दीजिए जो इसे एक बार बनाकर हर बार वही object return करे।
Singleton में constructor private क्यों होता है?
Private constructor दूसरे code को new से नए objects बनाने से रोकता है। यह सबको getInstance() इस्तेमाल करने पर मजबूर करता है, जो एक साझा instance return करता है, सिर्फ़ एक object होने की गारंटी देकर।
Singleton pattern कब इस्तेमाल करूँ?
तब जब program को ठीक एक साझा object चाहिए, जैसे logging service, configuration, cache, या एक database connection। इसका ज़्यादा इस्तेमाल बचिए, क्योंकि global state testing मुश्किल कर सकता है।
क्या बुनियादी Singleton thread-safe है?
सरल version thread-safe नहीं है — दो threads एक साथ दो instances बना सकते हैं। Multithreaded programs को, इसे सुरक्षित बनाने को synchronization, eager instance, या enum singleton इस्तेमाल कीजिए।
← Back to Java Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicPalindrome Number आपकी प्रगति: 48 / 61 (79%) · Lesson 49 / 61 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें