为了保证类在内存中只能有一个对象,构造函数需要private外面不实例化对象,提供一个公共方法返回一个实例

//饿汉式

class Single{

//需要是static的,getInstance方法才能访问,因为静态方法不能访问非静态变量

private static Single s = new Single();

private Single(){}

//因为构造函数是private的,外面无法创建实例,所以下面方法需要是static的外面才能通过类名访问

public static Single getInstance(){

return s;

}

}

//懒汉式

class Single{

//需要是static的,getInstance方法才能访问,因为静态方法不能访问非静态变量

private static Single s = null;

private Single(){}

//因为构造函数是private的,外面无法创建实例,所以下面方法需要是static的外面才能通过类名访问

public static Single getInstance(){

if(s==null) { synchronized(Single.class) //因为可能存在线程安全问题 { if(s==null) s=newSingle(); } } return s;

}

}

//测试
public static void main(String[] args)
{
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
System.out.print(s1==s2); //true
}

java 单例设计模式

转载于:https://blog.51cto.com/idcjia/1897140

java 单例设计模式 [相关推荐

  1. java单例设计模式_Java设计模式之单例模式详解

    在Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过.我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以 ...

  2. java单例设计模式懒汉_Java设计模式之单例设计模式(懒汉、饿汉)

    [toc] Java设计模式之单例设计模式(懒汉.饿汉) 相信面试过的初中级Java开发的朋友可能都有遇到过单例设计模式的笔试题吧,如果之前没有背下来或者不理解,可以看看下面这篇文章,应该足够应付笔试 ...

  3. java单例设计模式

    单例模式的概念 单例类只有一个实例,并且只由自己创建,实例化后向整个系统提供自己的实例. 单例设计模式主要分为2种:懒汉式和饿汉式.2者的区别在于初始化的时间不同. 像线程池,缓存,日志等都被设计成单 ...

  4. Java单例设计模式(实现Java的一个类只有一个对象)

    单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象.  如何实现类在内存中只有一个对象呢? 第一步:构造私有: 第二步:本身提供 ...

  5. Java|深入研究Java单例设计模式

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 简介 看到标题可能有人会问什么是单例模式呢? 在程序设计过程中 ...

  6. java单例设计模式之懒汉式和饿汉式

    单例模式 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法. 如果我们要让类在一个虚拟机中只能产生一个对象: 将类的 ...

  7. JAVA单例设计模式简单实现(懒汉与恶汉),多例设计模式的简单实现

    单例设计模式饿汉式 package Singleton; public class Singleton { private static final Singleton INSTANCE = new ...

  8. 探讨一下Java单例设计模式

    所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在.就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等. 1. ...

  9. java单例设计模式双重_Java 设计模式 ——单例模式(饿汉,懒汉,双重锁,静态内部类)...

    设计模式: 是在大量的实践中总结和理论化之后优选的代码结构,编程风格,以及解决问题的思考方式.设计模式免去我们自己再思考和摸索.就像是经典的棋谱,不同的棋局,我们用不同的棋谱 俗称"套路&q ...

最新文章

  1. The form contains the following errors
  2. 最小化安装linux CentOS-6.6后 部署fastdfs +下载地址 很干很干的干货
  3. c3p0数据源配置抛出Could not load driverClass com.mysql.jdbc.Driver的解决方案
  4. 机器人组团到城市打工,第一站果然是赛博朋克城
  5. java页面弹出窗口输出语句_jsp %%程序段里的catch语句里怎么弹出提示框?
  6. linux权限补充:rwt rwT rws rwS 特殊权限
  7. Vue计算属性的使用
  8. 2015_6_16-开博第一天
  9. grep和egrep的一些简单用法
  10. js 正则表达式,正整数
  11. django runserver开启服务(开启外网访问与ipv6访问)
  12. OmniGraffler软件和激活码
  13. jq移除一条html语句,jquery html()删除脚本标签
  14. Repeater的ItemCommand事件和ItemCreated事件,高手请跳过~
  15. vue 实例化几种方式_第二节:Vue实例化
  16. web平台安全测试方案
  17. FULENT软件测试自学,fluent网格质量检查 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  18. IEC60958/61937协议
  19. 新人服务器上快速简单搭建cs
  20. scrapy爬虫框架实现简单案例:爬取阳光平台内容

热门文章

  1. php固定空格,使用php校对(固定标点符号,空格,大写字母)生物页面文本
  2. 基于朴素贝叶斯的垃圾邮件分类-着重理解拉普拉斯变换
  3. oracle12系统需求,GoldenGateforOracle的系统需求
  4. 校内训练赛题解第三篇
  5. 使用seek()函数与read()快速实现读取文件中的一段数据
  6. (c语言)和与积的运算第四篇
  7. (五)操作系统安全概念和设计思想
  8. Android中应用百度地图API开发地图APP实例-显示百度地图
  9. Winform控件-DevExpress18下载安装注册以及在VS中使用
  10. SSM中进行Junit单元测试时无法注入service