设计模式之单例模式

来源:互联网 发布:小学生必知课外知识 编辑:程序博客网 时间:2024/06/18 04:01

设计模式之单例模式,懒汉式,饿汉式

设计模式——单例模式——面试考懒汉式!!!
解决一个类的内存中只存在一个对象,想要保证对象唯一:
1.为了避免其他程序过多建立该对象,先禁止其他程序建立该类对象
2.还为了让其他程序可以访问到该类对象,只好在本类中定义一个对象
3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式

这三步的代码实现:
将构造函数私有化
在类中创建一个本类对象
提供一个方法获取该对象(外部没有对象,但又要想外部可以调用,只能用类名调用,所有这个方法必须是静态方法,类中的对象也要是静态对象
对于实物该怎么描述就怎么描述,当需要将该事物的对象保证在内存中唯一时,只需将一下三步加上即可
代码:
饿汉式:Single类一进入内存,就已经创建好了对象
class Single{
private Single(){}
private static Single s=new Single();
public static Single getInstance(){ return s;}
}

懒汉式:实现对象延时加载:Single类进入内存,对象还没存在,调用方法时才建立对象

class Single{
private Single(){}
private static Single s=null;
public static synchronized Single getInstance(){ //但多线程时会出现安全问题:上锁synchronized ,一次只能一个进来,但会降低程序效率
if(s==null){ s=new Single(); }
return s;
}
}

懒汉式提高效率——双重判断形式

class Single{
private Single(){}
private static Single s=null;
public static Single getInstance(){ //上锁synchronized ,一次只能一个进来,但会降低程序效率
if(s==null){
synchronized(Single.class){
if(s==null){ s=new Single(); }
return s;
}
}
}
}

1 0
原创粉丝点击