一、简介

通俗例子:
你用杯子喝可乐,喝完了不丢,继续去倒果汁喝,就是单例。
你用杯子喝可乐,直接扔了杯子,换个杯子去倒果汁喝,就是多例。

上台面的说法:
所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。

二、实例说明

单例-饿汉式:

1、将构造方法私有化,不允许外部直接创建对象 private Singleton(){}
2、自己在类的内部创建一个唯一实例 private static Singleton instance = new Singleton();
3、提供一个用于获取实例的方法 public static Singleton getInstance(){return instance};

public class Singleton{ private static Singleton instance=new Singleton(); private Singleton(){}public staitc Singleto getInstance(){return instance; }
}

首先,能够想到的最简单的实现是,把类的构造函数写成private的,从而保证别的类不能实例化此类,然后在类中提供一个静态的实例并能够返回给使用者。
如上例,外部使用者如果需要使用Singleton的实例,只能通过getInstance()方法,并且它的构造方法是private的,这样就保证了只能有一个对象存在。

好了那么问题出现了:
上面的代码虽然简单,但是有一个问题——无论这个类是否被使用,都会创建一个instance对象。
如果这个创建过程很耗时,比如需要连接10000次数据库(夸张了…

单例模式懒汉式和饿汉式入门详解相关推荐

  1. 单例模式懒汉式和饿汉式区别

    单例模式懒汉式和饿汉式区别 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单 ...

  2. Java单例模式--------懒汉式和饿汉式

    Java单例模式--------懒汉式和饿汉式 单件模式用途: 单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用. 单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统 ...

  3. 单例模式——懒汉式和饿汉式详解

    单例模式属于创建型模式的一种,应用于保证一个类仅有一个实例的场景下,并且提供了一个访问它的全局访问点,如spring中的全局访问点BeanFactory,spring下所有的bean都是单例. 单例模 ...

  4. 单例模式懒汉式和饿汉式的区别

    文章目录 一.单例模式 二.懒汉式和饿汉式 一.单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最 ...

  5. [设计模式]单例模式(懒汉式,饿汉式)

    实现单例步骤: 1.构造函数私有化. 2.增加静态私有的当前类的指针变量. 3.提供静态对外接口,可以让用户获得单例对象. 单例 分为: 1.懒汉式 2.饿汉式 懒汉式 代码如下: class Sin ...

  6. 单例模式——懒汉式和饿汉式

    所谓"懒汉式"与"饿汉式"的区别,是在与建立单例对象的时间的不同. "懒汉式"是在你真正用到的时候才去建这个单例对象: 比如:有个单例对象 ...

  7. Java单例模式--懒汉式和饿汉式(Demo)

    你好我是辰兮,很高兴你能来阅读,本篇文章为大家讲解Java单例模式,相关的更多面试知识已经提前整理好文章可以阅读学习,分享获取新知,希望对Java初学者有帮助. 1.JAVA基础面试常考问题 : JA ...

  8. 单例模式懒汉式和饿汉式的线程安全问题

    文章目录 单例模式(Singleton Pattern) 一.饿汉式 二.懒汉式 三.线程安全 单例模式(Singleton Pattern) 单例模式是 Java 中最简单的设计模式之一.这种类型的 ...

  9. 单例模式之懒汉式和饿汉式

    目录 单例模式 懒汉式和饿汉式 懒汉式: 默认不会实例化,用的时候 new 饿汉式代码实现: 懒汉式和饿汉式区别: 懒汉模式: 饿汉模式: 执行效率上: 性能上: 单例模式 特点 : 只产生一个实例 ...

最新文章

  1. 【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序
  2. 《JavaScript凌厉开发 Ext详解与实践》3月5日开始上架销售
  3. 介绍一个 Windows 10 资源管理器的替代工具 - Explorer++
  4. 矩形法_字体设计 | 新手必学,超简单的矩形造字法!!
  5. java lambda 实现_Java 8 Lambda实现原理分析
  6. Nodejs获取MySQL数据_nodejs同步调用获取mysql数据时遇到的大坑
  7. 基于Spring Security的认证授权_连接数据库查询权限_Spring Security OAuth2.0认证授权---springcloud工作笔记131
  8. hdu2571动态规划
  9. Android FrameWork——PackageManager框架
  10. python中使用Opencv进行人脸检测
  11. 【转】Java程序员最常用的8个Java日志框架
  12. 计算机的发展共经历了哪几个阶段,1. 计算机的发展经历了哪几个阶段?各阶段的主要特征是什么,计算机的发展经历了哪些阶段?...
  13. 机器人运动估计系列(番外篇)——从贝叶斯滤波到卡尔曼(上)
  14. python白平衡-OpenCV3 自动白平衡:灰度世界和完美反射算法
  15. Macs Fan Control 官方正版中文网站 控制苹果电脑上风扇工具软件
  16. ListView源码(推荐)
  17. ESP32 开发笔记(三)源码示例 10_IIC_ADXL345 使用IIC总线实现读取ADXL345角度加速度传感器
  18. java jws-_java JWS 应用及实践
  19. 奇数阶魔方阵算法分析
  20. AR502H-CN开发笔记18:快速建立开发环境

热门文章

  1. ORA-00923: FROM keyword not found where expected
  2. java ado recordset_ADO之Recordset对象用法
  3. 05全局配置文件application.properties详解
  4. 2. SIM HOt PLUG DEBUG
  5. mysql 触发器 bug_MySQL触发器不起作用
  6. windows常用API函数
  7. 赋能游戏品质,洞察未来趋势,腾讯WeTest《2020移动游戏质量白皮书》正式开放预约
  8. upgrade和update的区别
  9. win平台搭建Lnmp环境
  10. ES 的 unassigned shards 核心处理方案