设计模式:解决某一类问题最行之有效的解决方式
就像经典棋谱,不同的棋局,可以使用不同的棋谱,免得自己再去思考和摸索。
Java中拥有23种设计模式
单例设计模式:解决一个类在内存中只存在一个对象
保证对象唯一
1.为了避免其他程序过多建立该类的对象,先禁止其他程序建立该类对象
2.为了让其他程序可以访问到该类对象中,只好在本类中,自定义对象
3.为了方便其他程序的访问,可以对外提供访问方式
在单例设计模式中,还分为饿汉式和懒汉式两种
饿汉式
先初始化对象
Single类一进入内存,就已经创建好了对象
class Single{
private Single(){}
private static Single s = new Single();
public static Single getInstance(){
return s;
}
}
懒汉式
对象在方法调用时才进行初始化,也叫做对象的延时加载
Single类进入内存中,并没有创建对象,当调用getInstance()方法时,才建立对象
class Single{
private Single(){}
private static Single s = null;
public static Single getInstance(){
if(s==null){
s = new Single();
}
return s;
}
}
在使用懒汉式的时候,由于多线程会出现同步问题,所以需要加入 同步的方 式,用同步函数和同步代码块都行,但低效
class Single{
private Single(){}
private static Single s = null;
public static Single getInstance(){
if(s==null){
synchronized (Single.class) {
if(s==null){
s = new Single();
}
}
}
return s;
}
}
PS:在实际开发中, 饿汉式的使用频率要更多见一些