1-什么是单例模式
java中new一个类,就得到了一个对象。多次的new,便得到多个对象;但是,有时我们需要只有一个实例。
定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供使用。
特点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
2-为什么使用单例模式
在实际应用开发中,有时候我们仅仅需要某个资源的一份就够了,如我们知道的Windows系统中,任务管理器,我们只能在系统中 打开一个窗口(不信,你可以试试);
还有,QQ软件聊天窗口,无论你点击几次好友头像,始终是同一个聊天窗口。这在程序中就是 希望这个窗口对象只有一个实例,只被实例化一次,后面如果还想得到实例,返回的还是这个已经存在的实例对象,这是一个需求场景。其次这种模式,
还降低了内存使用率,减少了不必要的内存浪费。因为,一个实例已经足够可以胜任我们要完成的业务要求。
3-什么情况下使用单例
正如2中提到,如果你希望这个资源(对象)只要一份就可以,就能帮你完成某个任务,而且又能节省资源开销,那么你可以采用单例;
一个简单的单例代码--
<span style="font-size:14px;">public class Single {
//把单例对象声明为静态,始终保持在内存中只有一份
private static Single single = null;
//私有构造器方法 使得外部不可以通过传统的new来实例化这个对象
//注:不可以省略,省略了,就是public修饰的构造器了
private Single(){
}
//为了线程安全 使用 synchronized 方法锁
public static synchronized Single getInstance(){
//如果对象不存在,就创建对象
if(single==null){
single = new Single();
}//否则,就返回已经存在的实例
return single;
}
}</span>