單例模式7種實(shí)現(xiàn)

      網(wǎng)友投稿 675 2025-03-31

      單例模式


      1 、介紹:

      單例模式(Singleton)也叫單態(tài)模式,是設(shè)計(jì)模式中最為簡(jiǎn)單的一種模式,甚至有些模式大師都不稱其為模式,稱其為一種實(shí)現(xiàn)技巧,因?yàn)樵O(shè)計(jì)模式講究對(duì)象之間的關(guān)系的抽象,而單例模式只有自己一個(gè)對(duì)象,也因此有些設(shè)計(jì)大師并把把其稱為設(shè)計(jì)模式之一。

      2 、應(yīng)用場(chǎng)景:

      3、七種實(shí)現(xiàn)方法

      1、

      package Singleton;

      public class SingletonOne {

      private SingletonOne(){}

      private static class LazyHolder{

      private static final SingletonOne INSATNCE=new SingletonOne();

      }

      public static SingletonOne getInstance(){

      return LazyHolder.INSATNCE;

      }

      }

      2、

      package Singleton;

      public class SingletonTwo {

      private SingletonTwo(){};

      private static final SingletonTwo INSTANCE=new SingletonTwo();

      public static SingletonTwo getInstance(){

      return INSTANCE;

      }

      }

      3、

      package Singleton;

      public class SingletonThree {

      private static final SingletonThree instance ;

      static{

      try{

      instance=new SingletonThree();

      }catch(Exception e){

      throw new RuntimeException("an error occurred!");

      }

      }

      public static SingletonThree getInsance(){

      return instance;

      }

      private SingletonThree(){}

      }

      4、

      package Singleton;

      public enum SingletonFour {

      INSTANCE;

      public void execute(String arg){

      }

      }

      5、

      package Singleton;

      public class SingletonFive {

      private static Volatile SingletonFive instance;

      private SingletonFive(){}

      public static SingletonFive getInstance(){

      if(instance==null){

      synchronized (SingletonFive.class) {

      if(instance==null){

      instance=new SingletonFive();

      }

      }

      }

      return instance;

      }

      }

      6、

      使用apache commons lang: LazyInitializer

      public class SingletonSix extends LazyInitializer {

      @Override

      protected ComplexObject initialize() {

      return new ComplexObject();

      }

      }

      // Create an instance of the lazy initializer

      SingletonSix initializer = new SingletonSix();

      ...

      // When the object is actually needed:

      ComplexObject cobj = initializer.get();

      7、

      使用guava:

      單例模式7種實(shí)現(xiàn)

      private static final Supplier tokenSup = Suppliers.memoize(new Supplier() {

      @Override

      public String get() {

      //do some init

      String result = xxx;

      return result;

      }

      });

      數(shù)據(jù)庫(kù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:WPS表格怎么一次性刪除空行?
      下一篇:單缸柴油機(jī)生產(chǎn)與制造的區(qū)別(單缸柴油機(jī)生產(chǎn)與制造的區(qū)別在哪)
      相關(guān)文章
      亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 亚洲综合一区国产精品| 亚洲av色影在线| 亚洲精品午夜无码电影网| 国产午夜亚洲不卡| 日韩亚洲变态另类中文| 国产亚洲精品福利在线无卡一| AV在线播放日韩亚洲欧| 亚洲综合色视频在线观看| 亚洲综合色视频在线观看| 中国亚洲女人69内射少妇| 亚洲色婷婷综合久久| 亚洲人成人77777网站| 国产亚洲精品美女久久久| 亚洲av综合avav中文| 婷婷久久久亚洲欧洲日产国码AV | 亚洲欧洲av综合色无码| 亚洲精品又粗又大又爽A片| 亚洲成a人片在线观看天堂无码| 亚洲大码熟女在线观看| 国产亚洲精品欧洲在线观看| 亚洲成a人片在线观看久| 2022中文字字幕久亚洲| 亚洲中文字幕无码一区二区三区| 亚洲精品无码不卡在线播HE| 亚洲av无码不卡| 亚洲精品视频免费看| 亚洲一卡二卡三卡| 亚洲永久网址在线观看| 亚洲AⅤ男人的天堂在线观看| 另类图片亚洲校园小说区| 久久久久亚洲AV成人网人人网站| 亚洲中文久久精品无码ww16| 亚洲产国偷V产偷V自拍色戒| 亚洲高清在线播放| 激情亚洲一区国产精品| 亚洲精华国产精华精华液网站| 国产亚洲福利精品一区二区| 中文字幕在线亚洲精品| 亚洲A∨无码一区二区三区| 亚洲无成人网77777|