单例设计模式定义:就是保证这个类在内存中只能创建这个唯一的对象。
单例设计模式的实现方式:
1,将构造函数私有化;
2,在类中创建一个静态的本类对象。
3,提供一个静态方法用来获取本类对象。
注意:使用静态的原因是,本类不能创建对象,所有使用静态的函数,用类名来调用可以创建对象的方法。
以下是实现单例模式的两种方式:
饿汉式:类一进内存,就已经创建好了对象。(定义单例时,建议使用饿汉式,简单安全)
class Single_1 {
private Single_1(){
}
private static Single_1 s = new Single_1();
public static Single_1 getInstance(){
return s;
}
}
懒汉式:类进内存后,对象还没有存在,只有调用了getInstance方法时,才建立对象(也称为延迟加载)。
class Single_2{
private Single_2(){
}
private static Single_2 s = null;
public static Single_2 getInstance(){
if(s==null){
synchronized(Single_2.class){
if(s==null){
s = new Single_2();
}
}
}
return s;
}
}
synchronized关键字的作用是:保证同一时刻最多只有一个线程执行该段代码。