设计模式(四)之单例模式
单例模式
1、描述
2、使用场景
在某些情况下,我们可能需要某个类只创建一个对象,即不让用对该类实例化出多余二个实例。比如说我们一栋大楼的管理员,我们需要一个就可以了,每次需要的时候我们都叫那一个,不用每次都new一个新的管理员出来。
3、模式中的角色
单例类():只可以创建出一个实例。
4、类图
6、代码实现
package org.sunday.prototype;
/**
*
* @author sunday
* 2014-1-8
*/
public class Singleton {
/**
* 单例类中包含自身声明的类变量,这个类变量是单例类唯一的实例。
*/
private static Singleton singleton;
/**
* 构造方法的访问权限是private。为了确保自己其他类中都无法被创建。
*/
private Singleton(){}
/**
* 单例类负责创建自己唯一的实例,并提供访问该实例类的类方法。
* 由于单例类的构造方法被设置为private,所以单例类必须自己负责创建自身声明的实例。
* 使用synchronized是为了防止多线程在调用这个类方法时创建多个单例类实例(线程安全)。
* @return 单例类的唯一对象
*/
public static synchronized Singleton getInstance() {
if(null == singleton) {
singleton = new Singleton();
}
return singleton;
}
}