JAVA单例模式:懒汉式,饿汉式】的更多相关文章

1 /* 2 * 设计模式:对问题行之有效的解决方式.其实它是一种思想. 3 * 4 * 1,单例设计模式 5 * 解决的问题:就是可以保证一个类在内容中的对象唯一性. 6 * 7 * 必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性. 8 * 9 * 如何保证对象唯一性呢? 10 * 1,不允许其他程序用new创建该类对象. 11 * 2,在该类创建一个本类实例. 12 * 3,对外提供一个方法让其他程序可以获取该对象. 13 * 14 * 步骤: 15 * 1,私有化该类构…
什么是单例模式: 单例模式既只能在自己本类中创建有且唯一的一个实例(姑且不考虑映射的情况)通过方法将该实例对外公开 第一种:单例模式-懒汉式 既调用getInstance()方法返回实例之前判断有没有该实例如果没有就创建一个实例 如果有该实例则直接返回出去,代码如下: class Singleton{ //单例-懒汉模式 public static Singleton singleton = null; //构造方法私有化 private Singleton(){ } //加锁保证线程的安全 p…
前言: 软件行业中有23中设计模式 单例模式    模版模式    装饰者模式    观察者模式    工厂模式    ........... 单例模式 1. 单例模式包括 1.1 饿汉式单例 1.2 懒汉式单例 2. 概念 单例模式: 保证一个类中存在唯一的一个对象       模式: 模式就是解决某类问题的固定步骤 3. 单例模式步骤 1.私有化构造器          2.声明本类中的引用类型变量,并且使该变量指向本类对象      3.提供一个公共的静态的方法获取该类的对象 4. 饿汉式…
单例设计模式 作用: 在应用程序有保证最多只能有一个实例. 好处: 2.1 提升运行效率. 2.2 实现数据共享. 案例:application 对象 懒汉式 3.1 对象只有被调用时才去创建. 3.2  示例代码 3.3由于添加了锁,所以导致效率低. public class lazySingleton { //懒汉式,单例模式! //由于对象需要被静态方法调用,把方法设置为static //由于对象是static,必须要设置访问权限修饰符为private , //如果是public 可以直接…
单例模式是我们在开发软件的过程中经常用到的23中常用的java模式之一,主要的功能就是保证我们所使用的对象只有一个,这也在一方面减少了出错的可能性,增强了代码的健壮.单例模式一般来说有两种实现的方式,一种称之为饿汉模式,另一中成为懒汉模式.饿汉模式顾名思义,就是来者不拒,全盘搞定嘛,请看代码: package Singleton; public class eHan { //1.首先必须将构造函数声明为私有的,用来防止外部代码直接访问 private eHan(){ } //2.声明一个静态的类…
在java中,单例模式需要满足以下要求: 构造方法私有化,使得本类之外的地方不能使用构造方法new出对象 提供私有静态属性,接收单例对象 公共的.静态的getInstance方法,便于外界拿到单例对象 想了解Java单例模式的请转到:Java单例模式-懒汉式.恶汉式.静态内部类.枚举以及线程安全问题 在scala中 主构造方法私有化,即类名后面加上private修饰 使用类的伴生对象达到Java中的static效果,伴生对象只会加载一次 /** * Desc: SCALA单例设计模式 * -懒汉…
package com.study.mode; /** * 单例模式:饿汉式. 线程安全. * @ClassName: SingleBean * @author BlueLake * @date 2012年9月5日 下午8:45:10 */ public class SingleBean { //1.私有化构造方法 private SingleBean(){ } //2.创建当前对象的静态实例. private static SingleBean single= new SingleBean()…
常用的五种单例模式实现方式 ——主要: 1.饿汉式(线程安全,调用率高,但是,不能延迟加载.) 2.懒汉式(线程安全,调用效率不高,可以延时加载.) ——其他: 1.双重检测锁式(由于JVM底层内部模型原因,偶尔会出问题,不建议使用) 2.静态内部类式(线程安全,调用效率高.但是,可以延时加载) 3.枚举式(线程安全,调用率高,不能延时加载) 如何选用? ——单例对象 占用资源少,不需要 延时加载 枚举式 好于 饿汉式 ——单例对象 占用资源大,需要延时加载 静态内部类式 好于 懒汉式 下面介绍…
今天复习了一下java的单例模式,写了懒汉式和饿汉式的实现例子.代码如下: 1.懒汉式单例 package com.lf.shejimoshi; /** * @classDesc: 类描述:(懒汉式单例测试类) * @author baobaolan * @createTime 2018年1月10日 * @version v1.0 */ public class SingletonTest { /** * @functionDesc: 功能描述:(测试懒汉式单例模式) * @author bao…
一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建自己的唯一实例. 3. 单例类必须向其他对象提供这一实例. 三.单例模式的实现 1.懒汉式 //懒汉式:类内实例对象创建时并不直接初始化,知道第一次调用方法才完成初始化操作 public class LazySingle { //创建私有构造方法 private LazySingle(){ } //…
单件模式用途:单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用.单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例.它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接.这是个简单的方法,在不考虑并发的时候这也是个不错的选择.但实际上,一个网站是并发的,并且有可能是存在大量并发操作的.如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统…
不多说,直接上干货! 什么是单例设计模式? 解决的问题:可以保证一个类在内存中的对象唯一性,必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性. 如何保证? 1.不允许其他程序用new创建该类的对象 2.在该类中创建一个本类的实例 3.对外提供一个方法让其他程序可以获取该对象 步骤(非常重要) 1.构造方法私有化 2.通过new在本类中创建本类的对象 3.定义一个共有的方法,将创建的对象放回 单例的两种模式 1.饿汉式单例(开发时常用) 2.懒汉式单例(面试时常用) //饿汉式单…
//饿汉式 提前生成了单例对象 class Singleton{ private static final Singleton instance=new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; } } //懒汉式 调用的时候才会生成对象 class Singleton11 { private static Singleton11 instance; pri…
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3.单例类必须给所有其他对象提供这一实例. 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例.在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例.这些应用都或多或少具有资源管理器的功能.每台计算机可以有若干个打印机,但只能有一个P…
Java的单例模式——饿汉式 package com.swift; //Java单例设计模式——恶汉式 public class SinglePerson { private String name="The God"; private int age=10000; private static SinglePerson person=new SinglePerson();//生成对象放在java静态池中,否则如果非静态在堆中,生命周期比类短 private SinglePerson(…
单例模式的设计:  1 //Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象. //对象是方法被调用时,才初始化,也叫做对象的延时加载.成为:懒汉式. //Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象. class Single { private static Single s = null;//创建对象 private Single(){}//防止被其他类对该类进行实例化,避免被调用 public stati…
一.饿汉式(静态常量) 这种饿汉式的单例模式构造的步骤如下: 构造器私有化:(防止用new来得到对象实例) 类的内部创建对象:(因为1,所以2) 向外暴露一个静态的公共方法:(getInstance) 示例: class Singleton{ //1私有化构造方法 private Singleton(){ } //2创建对象实例 private final static Singleton instance = new Singleton(); //3对外提供公有静态方法 public stat…
最近发现自己学习能力变慢了,想来想去还是发现是因为自己Java基础没有打扎实,接下来的一系列文章将主要记录自己对于Java的最基础知识点的学习. 一.equals和==的比较 先看例子: package com.amos; /** * @ClassName: EqualTest * @Description:Java中的equal和==的比较 * @author: amosli * @email:amosli@infomorrow.com * @date Apr 10, 2014 1:14:10…
(一)java.util.Date类 1.该类有一个long类型的属性:用来存放时间,是用毫秒数的形式表示,开始的日期是从1970年1月1号 00:00:00.    2.该类的很多方法都已经过时,不建议使用,对日期进行操作,建议使用Calendar类 3.Date d=new Date() 创建一个表示当前的日前Date对象,然后我们通过Calendar类来对他进行操作,例如:进行日期的加减 (二)java.util.Calendar类    该类是一个抽象类,通过Calendar.getIn…
public class InstanceSampleTest { public static void main(String[] args) { /** 单例设计模式的 饿汉式和懒汉式 * 单例模式,我们首先必须将类在一个虚拟机中只能产生一个对象,因此应该做到以下几步: * a:私有化构造方法,这样在该类的外边就不能用new操作来创建对象,但是在类的内部可以创建该类的对象. * b:调用该类的某个静态方法以返回内部创建的对象,因为该类的外部不发得到创建的对象,引用用静态的方法来返回. * *…
目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例. 好比一个国家就只有一个皇帝(XXX),此时每个人叫的“皇帝”都是指叫的XXX本人; 常见单例模式类型: 饿汉式单例:直接将对象定义出来 懒汉式单例:只给出变量,并不将其初始化: 总结: 饿汉式,static修饰,随着类的加载而加载,会损耗性能,但是方法相对简单 懒汉式  第一次用的时候相对较慢,因为需要加载!线程,不安全! package reviewDemo; //单例模式 //饿汉式,直接把对象构造出来 class…
懒汉式单例:线程非安全,当被调用的时候才创建实例,效率较高 public class LazySingleton { private static LazySingleton lazySingleton; private LazySingleton() { }; //获取单例方法 public static LazySingleton getLazySingleton() { if(lazySingleton==null) { lazySingleton = new LazySingleton(…
以下为单例设计模式中的两种经典模式的代码示意: 单例设计模式(spring框架IOC,默认创建的对象都是单例的): 饿汉式: public class SingleClass { private SingleClass(){} //私有化构造方法 不能new对象 private static final SingleClass s=new SingleClass(); //返回本类对象 public static SingleClass getInstance(){ return s; } }…
什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的. 如果重复产生对象的话,会导致大量的内存空间被占用,性能降低. 例如:在程序启动中,加载已保存的数据信息.这些数据信息是由一个单例对象统一读取,其他程序只需要通过这个单例对象获取加载的数据信息即可. 单例设计模式分为饿汉式和懒汉式.饿汉式是在系统加载类的时候就会自动提供类的实例化对象如Computer co…
单例模式: 步骤: 1.定义静态私有对象 2.构造函数私有化 3.定义一个静态的,返回值为该类型的方法,一般以Getinstance/getInit为方法名称 单例模式有懒汉和饿汉,最好使用饿汉 1.饿汉式---先实例化 public class Singleton { private static Singleton _singleton = new Singleton();//1 private Singleton() //2 { } public static Singleton GetI…
前言 我们都知道生活中好多小软件,有的支持多IP在线,有的仅仅局限于单个IP在线.为什么这样设计,在软件开发阶段就是,有需求就是发展.这就是软件开发的一个设计模式--懒汉式单例类和饿汉式单例类. 内容 现在的互联网发展很迅速,人们对保护自己隐私的意识也日益提高.所以单例模式就上场了,且看: 单例模式 定义: 单例模式保证一个类仅有一个实例,并提供了一个访问它的全局点. 解释: 用大白话来说就是 一条路,一次只让一个过,相当于种萝卜,一个坑只能种一个萝卜.官方讲通常我们可以让一个全局变量使得一个对…
概念: 单例模式确保某个类仅仅有一个实例.并且自行实例化并向整个系统提供这个实例.   单例模式有下面特点: 1.单例类仅仅能有一个实例 2.单例类必须自己给自己创建自己的唯一实例 3.单例类必须给全部其它对象提供这一实例 饿汉式: /*饿汉式*/ class Single { private static final Single s = new Single(); private Single () {} public static Single getInstance() { return…
https://v.qq.com/x/page/e0364ung5zp.html 讲的不错, 关于 饿汉式单例模式 code Student 类: package com.test;//单例模式之       饿汉     模式 eager singletonpublic class Student {    //构造函数私有,别人无法 new 实例    private Student(){}    //自己造一个实例    private static Student student = n…
在Java中,单例有很多种写法,面试时,手写代码环节,除了写算法题,有时候也会让手写单例模式,这里记录一下单例的几种写法和优缺点. 初级写法 懒汉式 饿汉式 双锁检验 内部类 枚举式 1.初级写法 public class Singleton { private static Singleton singleton = null; public Singleton() { } /**并发下会产生多个实例*/ public static Singleton getInstance(){ if(si…
单例模式的特点 一个类只允许产生一个实例化对象. 单例类构造方法私有化,不允许外部创建对象. 单例类向外提供静态方法,调用方法返回内部创建的实例化对象.  懒汉式(线程不安全) 其主要表现在单例类在外部需要创建实例化对象时再进行实例化,进而达到Lazy Loading 的效果. 通过静态方法 getSingleton() 和private 权限构造方法为创建一个实例化对象提供唯一的途径. 不足:未考虑到多线程的情况下可能会存在多个访问者同时访问,发生构造出多个对象的问题,所以在多线程下不可用这种…