单例/单体模式(Singleton)
来源:互联网 发布:淘宝充话费系统 编辑:程序博客网 时间:2024/06/05 03:44
转载:http://www.cnblogs.com/snandy/archive/2011/04/07/2007717.html
首先,单例模式是对象的创建模式之一,此外还包括工厂模式。单例模式的三个特点:
1,该类只有一个实例2,该类自行创建该实例(在该类内部创建自身的实例对象)
3,向整个系统公开这个实例接口
对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要。
用Java实现大致如下:
class Singleton { //私有,静态的类自身实例 private static Singleton instance = new Singleton(); //私有的构造子(构造器,构造函数,构造方法) private Singleton(){} //公开,静态的工厂方法 public static Singleton getInstance() { return instance; }}
使用时
Singleton obj = Singleton.getInstance();
这个单例类在自身被加载时instance会被实例化,即便加载器是静态的。因此,对于资源密集,配置开销较大的单体更合理的做法是将实例化(new)推迟到使用它的时候。即惰性加载(Lazy loading),它常用于那些必须加载大量数据的单体。修改下
class LazySingleton { //初始为null,暂不实例化 private static LazySingleton instance = null; //私有的构造子(构造器,构造函数,构造方法) private LazySingleton(){} //公开,静态的工厂方法,需要使用时才去创建该单体 public static LazySingleton getInstance() { if( instance == null ) { instance = new LazySingleton(); } return instance; } }
- 单例/单体模式(Singleton)
- 单例/单体模式(Singleton)
- 单例/单体模式(Singleton)
- 单例/单体模式(Singleton)
- 单例/单体模式(Singleton)
- 单例/单体模式(Singleton)
- javascript 单例/单体模式(Singleton)
- 单体模式(Singleton)
- 单体模式 Singleton
- java singleton 单体模式
- 单体模式Singleton
- 单体模式singleton
- 单体模式Singleton
- C#.net Singleton 单体模式
- 单例(Singleton)模式
- singleton 单例模式
- Singleton单例模式
- Singleton(单例)模式
- 手机支付宝密码存储机制分析
- meta标签之详解
- hdu 3966 (树链剖分+线段树)
- Mahout分类算法效果评估指标
- Fragment中使用左右滑动菜单
- 单例/单体模式(Singleton)
- Andorid APK反逆向解决方案---梆梆加固原理探寻
- UVALive 5913 Dictionary Size 解题报告
- 当你对成功的渴望足以与你对呼吸的渴望相媲美的时候,你就会成功!
- 关于ios内存警告
- java异常的捕获与抛出原则
- 洗大师权限管理分析
- ListView选中一行后高亮显示(附源码)
- setjmp 与 longjmp