本文实例讲述了java两种单例模式用法。分享给大家供大家参考,具体如下:

按照加载方式的不同,单例模式有两种实现:

private:只能在同一个类中使用

static:该类是类方法,不能调用实例方法。/类全局变量

final:方法或成员变量不能被修饰

1、饿汉式

public class EagerSigleton{

private static final EagerSigleton instance=new EagerSigleton();

private EagerSigleton(){}私有构造方法

public EagerSigleton getInstance(){//静态工厂方法

return instance;

}

}

2、懒汉式

public class LazySigleton{

private static final LazySigleton instance=null;

private LazySigleton(){}//私有构造函数

public synchronized LazySigleton getInstance(){//静态工厂方法,注意这里的synchronized

if(instance==null){

instance=new LazySigleton();

}

return instance;

}

}

分析对比:

相同点:

单例模式属于创建模式,保证在同一个jvm中仅仅存在该类的一个实例。在上面两种的单例模式中,可以看出:

① 两种方式的构造函数都是私有的。

② 对外接口都是工厂方法。

不同点:

饿汉式是在类装载时直接得到该类的实例,可以说式前期绑定的。而懒汉式在类加载时并没有指向具体的某个对象。而是当调用工厂方法后才被实例化。因此,前者速度快,后者速度慢。但后者可以加载其他的类,(也就是动态扩展)灵活性高。

更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

java两种绑定方式_java两种单例模式用法分析相关推荐

  1. java两种绑定方式_Javascript绑定事件的两种方式的区别

    命名函数 function check(){ //code } 匿名函数 window.onload = function(){ //先获取元素对象,再绑定事件,绑定的是匿名函数不可重用 var bt ...

  2. C++中的两种绑定方式(静态绑定、动态绑定)

    两种绑定方式 静态绑定:在编译时刻,根据指针或引用变量的静态类型来决定成员函数属于哪一个类. 动态绑定:在运行时刻,根据指针或引用变量实际指向或引用的对象类型(动态类型)来确定成员函数属于哪一个类. ...

  3. 猫狗收容所(有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进,入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进,入收容所)

      有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进,入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进,入收容所的.    ...

  4. 想不到吧,Java创建线程的方式只有一种

    目录 前言 继承Thread方式 实现Runnable接口 实现callable接口 总结 前言 看到这个标题的小伙伴先别着急喷我--在面试的时候,我们经常会被问到这种基础题:Java创建线程的方式有 ...

  5. JavaScript中this的五种绑定方式详解

    1 this的五种绑定方式 1.1 默认绑定 默认绑定是指当函数调用时,没有为其指定对象上下文,此时会将该函数的this绑定到全局对象(window对象).自ES5有了严格模式之后,默认绑定方式又分为 ...

  6. java的两种方式_java 两种方式的区别?

    成员函数方式 package cn.com.ch09; class FatherTest{ public void pet(String str){ System.out.println(str); ...

  7. Java防止Xss注入json_XSS的两种攻击方式及五种防御方式

    XSS介绍 跨站脚本攻击指的是自己的网站运行了别的网站里面的代码 攻击原理是原本需要接受数据但是一段脚本放置在了数据中: 该攻击方式能做什么? 获取页面数据 获取Cookies 劫持前端逻辑 发送请求 ...

  8. java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)...

    java中数组的三种定义方式 java中,数组是一种很常用的工具,今天我们来说说数组怎么定义 [java] view plain copy /** * 数组的三种定义方法 * 1.数组类型[] 数组名 ...

  9. 小米游戏四种登录方式与两种登录方式的问题

    游戏接入小米SDK后,打开游戏登录时会出现选择登录方式的界面.一般来说使用的是小米手机的话会有四种登录方式(小米账号,微信,微博,QQ),使用的是第三方手机的话只有两种登录方式(小米账号,QQ). 这 ...

最新文章

  1. 请教提高代码编写组织能力代码优化、精明
  2. 破解SQLSERVER存储过程的加密
  3. 【工作感悟】java编程规范pdf下载
  4. matlab 纯数据表格,MATLAB uitable表格数据更新处理
  5. 关于vite2.0和vue/cli建立项目的区别
  6. Kubernetes证书相关(CFSSL)
  7. 高一计算机基础知识ppt课件,高一信息技术课件
  8. c++学习 | MFC —— 控件介绍
  9. 中继器是什么计算机网络,中继器是什么
  10. 坚果云 我的电脑图标_如何删除“我的坚果云”这个图标?
  11. exec函数用法总结
  12. 互联网时代如何快速提升宣传效果?
  13. LRC歌词制作LRC歌词制作
  14. 怎么办?不到 20 人的 IT 公司我该去吗?
  15. 利用excel表格将IP(IPV4)地址自动按段拆分每一段的数值至单元格
  16. Java类型转换(自动类型转换+强制类型转换)
  17. 至强服务器性能视频,英特尔至强E5-2600服务器到底有多强?
  18. 机器学习SVC分类预测三个月后的股价
  19. JS实现复制粘贴的方式
  20. 字段私有制,属性方法

热门文章

  1. AlexNet模型解读
  2. vector中resize()和reserve()区别
  3. 剑指offer——面试题41:和为S的连续整数序列
  4. Win10系统 如何查看win10版本类型及版本号
  5. 赢者通吃自编码器(WTA-AE)
  6. Keepalived实战(3)
  7. [业余项目]黄金点游戏
  8. 程序员为什么热衷造轮子?
  9. Django、Flask、Tornado的区别
  10. 【linux】Can't connect to local MySQL server through socket和Plugin 'auth_socket' is not loaded报错...