一、单列模式定义:
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
二、单例模式特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式保证了全局对象的唯一性,比如系统启动读取配置文件就需要单例保证配置的一致性。
三、线程安全问题
四、单例模式的选择
五、实现单例模式的方式
饿汉式单例:
class Single{
//1.私有化构造方法,不让外界直接new
private Single(){}
//2.在类的内部,创建好对象 static:静态只能调用静态
static private Single s =new Single();
//3.对外界只提供一个公共的get(),返回一个已经准备好的对象
//static 是为了外界不通过对象访问而是通过类名直接调用方法
static public Single get(){
return s;//静态只能调用静态
}
}
public static void main(String[] args) {
Single s =Single.get();
Single x =Single.get();
}
懒汉式
class Single02{
// 1、私有化构造方法,不让外界直接new
private Single02() {}
// 2、在类的内部,创建好对象
//static :静态只能调用静态
private static Single02 o = null;
// 3、对外界提供一个公共的get(),返回一个已经准备好的对象
//static是为了外界不通过对象访问而是通过类名直接方法
synchronized static public Single02 get(){
//注意:静态只能调用静态
if(o==null){
o = new Single02();//会有安全问题
}
return o;
}
}
总结:我也没搞懂。。。。