JavaRush /جاوا بلاگ /Random-SD /سنگلٽن جو نمونو توهان جي پنهنجي لفظن ۾
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;
  }
}
multithreading سان مسئلا آهن ۽ پوء توهان هڪ getInstance()مارڪر طريقو رکي سگهو ٿا synchronized:
public class Singleton {
  private static Singleton instance;
  private Singleton () {}

  public static synchronized Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}
آخر ۾، هميشه وانگر، مان اهو چوڻ چاهيان ٿو ته جيڪڏهن توهان مختلف طريقي سان سوچيو يا مون ۾ ڪا غلطي ڳولي، تبصرن ۾ لکو! اسان هر شي تي خوشي سان بحث ڪنداسين :) جيڪڏهن توهان مضمون پسند ڪيو، "+" لکو ۽ مان ڄاڻندس. هي منهنجي لاءِ اهم آهي :) پي ايس آئون وڌيڪ لاڳو ڪري رهيو آهيان: جوشوا بلوچ جي مطابق ، هي ٽيمپليٽ کي لاڳو ڪرڻ جو بهترين طريقو آهي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