Singleton 单例设计模式
目录
[TOC]
概述
单例模式就是保证对象的唯一性,在项目启动之后,只初始化一次,通常用于读取配置文件在Configuration类似的类中。
单例模式分两种,饿汉式,懒汉式。
饿汉式:项目启动就已经初始化好,等待调用。
懒汉式:只有当单例对象第一次被调用时才初始化。
饿汉式Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
package cn.com.jomin.designpattern.singleton; /** * Created * Date: 14:33 2021-06-15 <br/> * Description: 单例设计模式:饿汉式 * 1,私有化构造方法 * 2,在成员变量中初始化状态为 private static final 的单例对象 * 3,提供静态获取单例对象的方法 * @author jomin@loserzhao.com * @see */ public class HungrySingletonPatternDemo { private static final HungrySingletonPatternDemo instance = new HungrySingletonPatternDemo(); private HungrySingletonPatternDemo(){ } public static HungrySingletonPatternDemo getInstance(){ return instance; } public void sayHello(){ System.out.println("hello"); } } |
懒汉式,双检锁,线程非绝对安全的Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
package cn.com.jomin.designpattern.singleton; /** * Created * Date: 14:33 2021-06-15 <br/> * Description: 单例模式:饱汉式,线程不安全 * 1,私有化构造方法 * 2,在成员变量中定义单例对象,不初始化 * 3,提供静态获取单例对象的方法并完成初始化 * @author jomin@loserzhao.com * @see */ public class FullSingletonPatternDemo { private static FullSingletonPatternDemo instance; private FullSingletonPatternDemo(){ } public static FullSingletonPatternDemo getInstance(){ if(null == instance){ synchronized(FullSingletonPatternDemo.class){ if(null == instance){ instance = new FullSingletonPatternDemo(); } } } return instance; } public void sayHello(){ System.out.println("hello"); } } |
懒汉式,线程非绝对安全,基于内部类实现的Demo
[crayon-68214024[……]
Read more
近期评论