分类: Java
2011-11-15 13:24:51
定义:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。
单例模式的要点:
1.这个类只能有一个实例
2.它必须自行创建这个实例
3.它必须自行向整个系统提供这个实例
饿汉式单例类
饿汉式单例类是在java语言里实现起来最为简单的单例类,实例如下:
代码清单1:饿汉式单例类
Java代码
在这个类被加载时,静态变量m_instance会被初始化,此时类的私有构造方法会被调用,继而单例类的唯一实例就被创建出来了。
懒汉式单例类
与饿汉式单例类相同的是,类的构造方法仍是私有的。但懒汉式单例类是在第一次被引用时将自己初始化。实例如下:
Java代码
同样,由于构造方法是私有的,懒汉式单例类也不能被继承,然而懒汉式单例类在实例化时,必须处理好在多个线程同时首次访问此类时的问题,所以必须考虑线程同步问题。
登记式单利模式
登记式单利模式是GoF为了克服饿汉式和懒汉式不可被继承的缺点而设计的。实例如下:
Java代码
它的子类RegSingletonChild需要父类的帮助才能被初始化,如下:
Java代码
使用单例模式的一个必要条件:在一个系统要求一个类只有一个实例时才应当使用单例模式。