在访问权限控制的帖子里简单的提及了一下单例模式.下面做详细点的介绍.
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
1.懒汉模式:
在需要使用的时候才进行初始化
public class SingletonClass {
private static SingletonClass instance = null;
private SingletonClass() {
}
public static SingletonClass getInstance() {
if (instance == null) {
synchronized (SingletonClass.class) {
if (instance == null)
instance = new SingletonClass();
}
}
return instance;
}
}
1.将构造函数设置为private类型,禁止其他类通过new instance()的方法来得到对象
2.添加一个静态的成员变量,成员变量为这个类本身,说明该类最多只能有一个对象
3.提供一个得到类的实例的方法,由于在执行的过程中,如果多个线程同时进行类的对象是否为空的这一操作时,可能会因为线程的原因而创建了多个对象,这样就破坏了单例模式的设计思路,所以需要在方法中加入synchroinzed关键字来保持程序的正常执行。如果当前类没有实例,那么就调用私有的构造方法并返回实例,如果已经有了实例的话,那么就返回该类当前的实例即可.
2.恶汉模式:
当第一次访问类的时候,初始化出一个对象来,在以后的过程中,只要使用getInstance的方法就返回这一对象,于懒汉模式在生成该类的时候才初始化不同,恶汉模式在一访问这个类的时候就进行了初始化。
public class SingletonClass {
private static SingletonClass instance = new SingletonClass();
private SingletonClass() {
}
public static SingletonClass getInstance() {
return instance;
}
}
1.构造函数私有化
2.提供一个私有的静态的对象
3.提供方法得到当前类中的这一个唯一的对象