全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java单例模式实现静态内部类方法示例

Singleton是众多设计模式中最容易理解的一种,也是众多设计模式中较为重要的一种设计模式。接下来我们看看具体介绍。

Singleton模式实现的重点在于将构造函数私有化(private),并通过提供静态公有函数(public synchronized static xxx getInstance)来获取定义在类中的静态私有成员(private static xxx instance),通过一个简单的判断静态实例是否为空来控制这个类只能够new一次,即控制了一个类只能有单个实例,一般的实现如下代码所示:

package com.study.dp.singleton; 
/** 
 * 传统方式实现单例模式 
 * @author CrazyPig 
 * 
 */ 
public class TraditionalSingletion { 
  // 单实例 
  private static TraditionalSingletion instance; 
   
  // 不让new 
  private TraditionalSingletion() { 
    System.out.println("private TraditionalSingletion()"); 
  }    
  public synchronized static TraditionalSingletion getInstance() { 
    System.out.println("TraditionalSingletion getInstance()"); 
    if(instance == null) { 
      System.out.println("instance = new TraditionalSingletion()"); 
      instance = new TraditionalSingletion(); 
    } 
    return instance; 
  }    
  public static void main(String[] args) { 
    TraditionalSingletion instance = TraditionalSingletion.getInstance(); 
    System.out.println("========================================"); 
    TraditionalSingletion instance01 = TraditionalSingletion.getInstance(); 
    System.out.println("========================================"); 
    TraditionalSingletion instance02 = TraditionalSingletion.getInstance(); 
  } 
}

今天偶然在一篇文章中看到另外一种巧妙的做法,通过将这个单实例的引用变量定义在静态内部类中,来实现单例,这样可以做到不用if条件进行判断,并且是多线程安全的(由jvm保证)。这个特殊的做法如下所示:

package com.study.dp.singleton;  
/** 
 * 静态内部类实现单例模式 
 * @author CrazyPig 
 * 
 */ 
public class SpecialSingleton {    
  // 静态内部类 
  private static class NestClass { 
    private static SpecialSingleton instance; 
    static { 
      System.out.println("instance = new SingletonTest()"); 
      instance = new SpecialSingleton(); 
    } 
  }    
  // 不能直接new 
  private SpecialSingleton() { 
    System.out.println("private SingletonTest()"); 
  } 
  public static SpecialSingleton getInstance() { 
    System.out.println("SingletonTest getInstance()"); 
    return NestClass.instance; 
  } 
  public static void main(String[] args) { 
    SpecialSingleton instance = SpecialSingleton.getInstance(); 
    System.out.println("========================================"); 
    SpecialSingleton instance01 = SpecialSingleton.getInstance(); 
    System.out.println("========================================"); 
    SpecialSingleton instance02 = SpecialSingleton.getInstance(); 
  } 
} 

当第一次引用getInstance()方法的时候,访问静态内部类中的静态成员变量,此时该内部类需要调用static代码块(因为首次访问该类)。而后再次访问getInstance()方法会直接返回instace引用。这种做法相对于传统做法更加巧妙。

总结

以上就是本文关于Java单例模式实现静态内部类方法示例的全部内容,希望对大家有所帮助,感兴趣的朋友可以参阅本站其他专题。


# java  # 单例  # 静态内部类  # 单例模式  # 内部类  # 静态内部类实现单例  # java算法之静态内部类实现雪花算法  # 浅谈Java内部类——静态内部类  # Java内部类应用之静态内部类应用示例  # Java中的静态内部类详解及代码示例  # java 内部类(匿名类  # 匿名对象  # 静态内部类)详解及实例  # Java编程中静态内部类与同步类的写法示例  # 浅谈Java内部类与静态内部类的区别  # 类中  # 所示  # 首次  # 感兴趣  # 能有  # 在一  # 相对于  # 来实现  # 最容易  # 多线程  # 可以做到  # 为空  # 法会  # class  # brush  # Singleton  # pre  # study  # dp 


相关文章: 盘锦网站制作公司,盘锦大洼有多少5G网站?  网站设计制作企业有哪些,抖音官网主页怎么设置?  建站之星免费版是否永久可用?  如何通过云梦建站系统实现SEO快速优化?  如何制作算命网站,怎么注册算命网站?  完全自定义免费建站平台:主题模板在线生成一站式服务  如何做网站制作流程,*游戏网站怎么搭建?  如何快速辨别茅台真假?关键步骤解析  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  零服务器AI建站解决方案:快速部署与云端平台低成本实践  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  江苏网站制作公司有哪些,江苏书法考级官方网站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  建站主机默认首页配置指南:核心功能与访问路径优化  代购小票制作网站有哪些,购物小票的简要说明?  如何正确下载安装西数主机建站助手?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  c# 服务器GC和工作站GC的区别和设置  如何在腾讯云服务器上快速搭建个人网站?  宝塔Windows建站如何避免显示默认IIS页面?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何注册花生壳免费域名并搭建个人网站?  建站之星云端配置指南:模板选择与SEO优化一键生成  在线教育网站制作平台,山西立德教育官网?  建站主机如何选?性能与价格怎样平衡?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  建站之星后台密码遗忘或太弱?如何重置与强化?  建站之星如何助力网站排名飙升?揭秘高效技巧  建站主机选购指南:核心配置与性价比推荐解析  如何快速生成可下载的建站源码工具?  如何制作一个表白网站视频,关于勇敢表白的小标题?  西安大型网站制作公司,西安招聘网站最好的是哪个?  建站之星备案流程有哪些注意事项?  建站之星收费标准详解:套餐费用及年费价格表一览  如何在橙子建站中快速调整背景颜色?  如何做静态网页,sublimetext3.0制作静态网页?  临沂网站制作企业,临沂第三中学官方网站?  清除minerd进程的简单方法  音响网站制作视频教程,隆霸音响官方网站?  高防服务器如何保障网站安全无虞?  如何在橙子建站上传落地页?操作指南详解  如何快速生成ASP一键建站模板并优化安全性?  如何快速重置建站主机并恢复默认配置?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  建站之星上传入口如何快速找到?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  如何通过智能用户系统一键生成高效建站方案?  如何通过cPanel快速搭建网站?  如何在阿里云香港服务器快速搭建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。