JavaRush /Блоги Java /Random-TG /Намунаи ягона бо суханони худ
Roman_kh
Сатҳи
Харьков

Намунаи ягона бо суханони худ

Дар гурӯҳ нашр шудааст

Салом ба ҳама, javaRush!

Имрӯз ман ба шумо дар бораи намунаи тарроҳӣ Singleton(якгона) мегӯям. Намунаи ягона бо суханони худ - 1Ҳадаф: эҷод кардани синфе, ки танҳо як an object дошта бошад. Ин маънои онро дорад, ки новобаста аз он ки чанд маротиба ба он дастрасӣ пайдо мешавад, ҳамон an objectе, ки бори аввал сохта шудааст, баргардонида мешавад. Ин як чизи қулай ва дар бисёр ҷойҳо зарур аст, бесабаб нест, ки он дар чаҳорчӯба татбиқ карда мешавад. Ариза:
  • Масалан, шумо бояд пойгоҳи додаҳоро ба лоиҳа ва синфе пайваст кунед, ки барои пайвастшавӣ ба он масъул аст. Пайвастшавӣ як бор сохта мешавад ва ба такрор ва такрор сохтани он лозим нест
  • Application settings— синфе, ки барои танзимоти пайвастшавӣ, ки барои барнома лозим аст, масъул аст: мизбони пойгоҳи додаҳо ва порт ва ғайра. Онҳо як маротиба сохта мешаванд ва дар тамоми амалиёти барнома истифода мешаванд.
  • Мисолҳои зиёде ҳастанд, ки ман зикр накардаам, аз ин рӯ имконоти худро дар шарҳҳо нависед! =)
Пас аз ин муқаддима, тавре ки ман мефаҳмам, шумо метавонед як мисоли ин синфро нишон диҳед: (Гарчанде ки ман боварӣ дорам, ки ҳар яки мо метавонем татбиқи инро пайдо кунем) Ин аст соддатарин мисол, вақте ки мо конструкторро хусусӣ мекунем, яъне. Шумо наметавонед an objectро ба таври возеҳ эҷод кунед. Ва як усули статикӣ вуҷуд дорад getInstance(), ки an objectро таъмин мекунад.
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 Ман татбиқи бештарро илова мекунам: Ба гуфтаи Ҷошуа Блок , ин беҳтарин роҳи татбиқи қолаб аст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