/**
* Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
*
* 功能描述:
* @Package: com.zuoyan.singleton.demo
* @author: Administrator
* @date: 2019年3月27日 上午8:47:01
*/
package com.zuoyan.singleton.demo;
/**
* Copyright: Copyright (c) 2019 ZuoYanCoder
*
* @ClassName: SingletonHungry.java
* @Description: 饿汉式单例,程序一加入到内存就开始创建对象了
*
* @version: v1.0.0
* @author: Administrator
* @date: 2019年3月27日 上午8:47:01
*
* Modification History:
* Date Author Version Description
*---------------------------------------------------------*
* 2019年3月27日 Administrator v1.0.0 修改原因
*/
public class SingletonHungry {
private static SingletonHungry single = new SingletonHungry();
//私有 构造函数
private SingletonHungry(){};
//获取单例对象
public static SingletonHungry getSingleTonInstance()
{
return single;
}
}
1 /**
2 * Copyright © 2019 eSunny Info. Tech ZuoYanCoder. All rights reserved.
3 *
4 * 功能描述:
5 * @Package: com.zuoyan.singleton.demo
6 * @author: Administrator
7 * @date: 2019年3月27日 上午8:52:54
8 */
9 package com.zuoyan.singleton.demo;
10
11 /**
12 * Copyright: Copyright (c) 2019 ZuoYanCoder
13 *
14 * @ClassName: SingletonLazy.java
15 * @Description: 懒汉式单例模式
16 * 特点: 对象是方法被调用时才初始化,也叫做对象的延时加载。称为懒汉式
17 * Single类进内存,对象还没有存在,只用调用了getInstance方法时,才创建。
18 *
19 * @version: v1.0.0
20 * @author: Administrator
21 * @date: 2019年3月27日 上午8:52:54
22 *
23 * Modification History:
24 * Date Author Version Description
25 *---------------------------------------------------------*
26 * 2019年3月27日 Administrator v1.0.0 修改原因
27 */
28 public class SingletonLazy {
29
30 private static SingletonLazy single = null;
31 private SingletonLazy(){}
32
33 public static SingletonLazy getInstance(){
34 if(single ==null)
35 {
36 synchronized (SingletonLazy.class) {
37 single= new SingletonLazy();
38 }
39 }
40 return single;
41 }
42
43 }
1 /**
2 * Copyright © 2019 eSunny Info. Tech ZuoYanCoder. All rights reserved.
3 *
4 * 功能描述:
5 * @Package: com.zuoyan.singleton.demo
6 * @author: Administrator
7 * @date: 2019年3月27日 上午8:58:58
8 */
9 package com.zuoyan.singleton.demo;
10
11 /**
12 * Copyright: Copyright (c) 2019 ZuoYanCoder
13 *
14 * @ClassName: SingletonStaticInnerClass.java
15 * @Description: 静态内部类实现,也是懒加载的一种方式
16 * 要点:
17 * 1.外部类没有static属性,则不会像饿汉式那样 立即加载对象
18 * 2.只有真正调用getInstance(),才会加载静态内部类。加载类是线程安全的
19 * 。instance 是static final类型,保证了内存中只会存在一个这样的实例
20 * 而且只能被赋值一次,从而保证了线程安全性
21 * 3.兼备了高并发高效调用和延迟加载的优势!
22 *
23 * @version: v1.0.0
24 * @author: Administrator
25 * @date: 2019年3月27日 上午8:58:58
26 *
27 * Modification History:
28 * Date Author Version Description
29 *---------------------------------------------------------*
30 * 2019年3月27日 Administrator v1.0.0 修改原因
31 */
32 public class SingletonStaticInnerClass {
33
34 private static class SingletonClassInstance{
35 private static final SingletonStaticInnerClass instance= new SingletonStaticInnerClass();
36 }
37
38 private SingletonStaticInnerClass(){}
39
40
41 public SingletonStaticInnerClass getSingletonInstance(){
42 return SingletonClassInstance.instance;
43 }
44
45 }