关于单利模式的概念,就是说保证一个类有且仅有一个实例,并提供一个访问它的全局访问点。
要想一个类只有一个实例,那就不能在类的外部随意去实例化该类,那么就只能将该类的构造函数定义为私有类型。但还是必须要有创建对象的机会,那就在该类内部去构造一个对象,并将对象返回出来。这里还有一点需要注意,返回引用时不能无限制的一直返回,如果一直返回,那么私有的构造函数就没有意义了。所以需要为返回的对象引用做一次判断。
单例模式的java实现代码:
class Singleton {
//私有静态的引用,外部不可访问
private static Singleton singleton;
//私有的无惨构造,外部无法直接创建对象
private Singleton(){
}
//类内部构建一个可以获得实例的方法(获得实例getInstance)
//此方法定义为静态的,可以在外部直接用类名调用
public static Singleton getInstance(){
//先判断引用是否为空,若不为空,则不能重复赋值
//若引用为空值,则为其赋值为实例的引用
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
其中的判空操作是有必要的,如果不牵扯到线程的话都没有什么问题,一旦放到线程应用中,那么判空将会有效的保证线程安全。