责任型模式之Singleton(单例)模式
来源:互联网 发布:淘宝店铺释放后保证金 编辑:程序博客网 时间:2024/06/16 22:19
1.如果你期望将集中到某个类的单个实例中,可使用Singleton(单例)模式
2.写法:懒汉,饿汉,双重校验锁,枚举和静态内部类
3.举例:
//饿汉实现单例:不具有lazy loading效果,且线程安全public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } }
//静态内部类实现单例:具有lazy loading效果,且线程安全public class LazyLoadingSingleton { private static class SingletonHolder { private static final LazyLoadingSingleton INSTANCE = new LazyLoadingSingleton(); } private LazyLoadingSingleton (){} public static final LazyLoadingSingleton getInstance() { return SingletonHolder.INSTANCE; } }
//测试类public class Test { public static void main(String[] args){ Singleton singleton0 = Singleton.getInstance(); Singleton singleton1 = Singleton.getInstance(); LazyLoadingSingleton LazyLoadingSingleton0 = LazyLoadingSingleton.getInstance(); LazyLoadingSingleton LazyLoadingSingleton1 = LazyLoadingSingleton.getInstance(); if(singleton0==singleton1){ System.out.println("singleton为单例"); } if(LazyLoadingSingleton0==LazyLoadingSingleton0){ System.out.println("LazyLoadingSingleton为单例"); } }}
4.总结:
4.1一般情况下采用饿汉实现单例
4.2明确实现lazy loading效果时采用静态内部类实现单例
4.3涉及到反序列化创建对象时我会试着使用枚举的方式来实现单例
4.4最好保证线程安全,且声明无参数构造函数为私有
5.参考:http://www.blogjava.net/kenzhh/archive/2013/03/15/357824.html
0 0
- 责任型模式之Singleton(单例)模式
- 创建型模式之单例模式(Singleton)
- Java设计模式之单例模式(singleton模式)
- java设计模式之单例模式(Singleton模式)
- 设计模式之单例模式(singleton模式)
- Java设计模式之单例模式(singleton模式)
- 设计模式之Singleton模式(单例模式)
- Java之单例模式(Singleton)
- Java之单例模式(Singleton)
- 模式之--单例(Singleton)未完
- 设计模式之单例(Singleton)
- 设计模式之单例模式Singleton
- 【设计模式】之 Singleton 单例模式
- 设计模式之单例模式(Singleton)
- 模式学习之单例模式:Singleton
- 设计模式之单例模式(Singleton)
- 设计模式之单例模式Singleton
- 设计模式之单例模式-Singleton
- 实现滑动的几种简单方法
- SpringMVC注解-2016-04-06
- Nginx性能优化----内核篇
- 取一个整数数组中最大和次大的二个数
- Tcl -- variable
- 责任型模式之Singleton(单例)模式
- SDAU 搜索专题 06 Line belt
- NFS
- 1006. Sign In and Sign Out (25)
- poj1017(贪心)
- 2016-04-06
- 多表联合操作
- LeetCode--max-points-on-a-line
- KMP字符串匹配算法(二)—KMP要点和证明