JavaRush /جاوا بلاگ /Random-UR /آپ کے اپنے الفاظ میں سنگلٹن پیٹرن
Roman_kh
سطح
Харьков

آپ کے اپنے الفاظ میں سنگلٹن پیٹرن

گروپ میں شائع ہوا۔

سب کو ہیلو، جاوا رش!

آج میں آپ کو ڈیزائن پیٹرن Singleton(سنگل) کے بارے میں بتاؤں گا۔ آپ کے اپنے الفاظ میں سنگلٹن پیٹرن - 1مقصد: ایک کلاس بنائیں جس میں صرف ایک آبجیکٹ ہو گا۔ اس کا مطلب یہ ہے کہ چاہے کتنی ہی بار اس تک رسائی حاصل کی جائے، وہی چیز جو پہلی بار بنائی گئی تھی واپس آ جائے گی۔ یہ ایک آسان چیز ہے اور بہت سی جگہوں پر ضروری ہے، یہ کچھ بھی نہیں ہے کہ اسے فریم ورک میں لاگو کیا جا رہا ہے۔ درخواست:
  • مثال کے طور پر، آپ کو ڈیٹا بیس کو کسی پروجیکٹ اور ایک کلاس سے جوڑنے کی ضرورت ہے جو اس سے جڑنے کے لیے ذمہ دار ہوگی۔ کنکشن ایک بار بنتا ہے اور اسے بار بار بنانے کی ضرورت نہیں ہوتی
  • Application settings- کنکشن کی ترتیبات کے لیے ذمہ دار ایک کلاس جو ایپلیکیشن کے لیے درکار ہے: ڈیٹا بیس ہوسٹ اور پورٹ وغیرہ۔ وہ ایک بار بنائے جاتے ہیں اور ایپلیکیشن کے پورے آپریشن میں استعمال ہوتے ہیں۔
  • اس کے علاوہ اور بھی بہت سی مثالیں ہیں جن کا میں نے ذکر نہیں کیا، لہٰذا کمنٹس میں اپنے اختیارات لکھیں! =)
اس تمہید کے بعد، جیسا کہ میں سمجھتا ہوں، ہم اس کلاس کی ایک مثال دکھا سکتے ہیں: (حالانکہ مجھے یقین ہے کہ ہم میں سے ہر ایک اس پر عمل درآمد کر سکتا ہے) یہاں سب سے آسان مثال ہے، جب ہم کنسٹرکٹر کو نجی بناتے ہیں، یعنی آپ واضح طور پر کوئی چیز نہیں بنا سکتے۔ اور ایک جامد طریقہ ہے getInstance()جو کسی چیز کو فراہم کرتا ہے۔
public class Singleton {
  private static Singleton instance;
  private Singleton () {}

  public static Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}
ملٹی تھریڈنگ میں مسائل ہیں اور پھر آپ getInstance()مارکر کا طریقہ لگا سکتے ہیں synchronized:
public class Singleton {
  private static Singleton instance;
  private Singleton () {}

  public static synchronized Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}
آخر میں، ہمیشہ کی طرح، میں یہ کہنا چاہتا ہوں کہ اگر آپ مختلف سوچتے ہیں یا مجھ میں کوئی غلطی محسوس کرتے ہیں، تبصرے میں لکھیں! ہم خوشی کے ساتھ ہر چیز پر تبادلہ خیال کریں گے :) اگر آپ کو مضمون پسند آیا تو "+" لکھیں اور مجھے معلوم ہو جائے گا۔ یہ میرے لیے اہم ہے :) PS میں مزید نفاذات شامل کر رہا ہوں: Joshua Bloch کے مطابق ، یہ ٹیمپلیٹ کو نافذ کرنے کا بہترین طریقہ ہےEnum Singleton
public enum Singleton {
   INSTANCE;
}
Double Checked Locking & volatile
public class Singleton {
        private static volatile Singleton instance;

        public static Singleton getInstance() {
      Singleton localInstance = instance;
      if (localInstance == null) {
         synchronized (Singleton.class) {
            localInstance = instance;
            if (localInstance == null) {
               instance = localInstance = new Singleton();
            }
         }
      }
      return localInstance;
   }
}
اورمزید On Demand Holder idiom:
public class Singleton {

   public static class SingletonHolder {
      public static final Singleton HOLDER_INSTANCE = new Singleton();
   }

   public static Singleton getInstance() {
      return SingletonHolder.HOLDER_INSTANCE;
   }
}
+سست آغاز +اعلی کارکردگی -غیر جامد کلاس فیلڈز کے لیے استعمال نہیں کیا جا سکتا کوئی سوال/مشورے - تبصرے میں لکھیں! میرے دوسرے مضامین بھی دیکھیں:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION