思路:为什么需要单例模式=什么是单利模式&&有什么特点
懒汉模式//第一次调用就实例化自己
public class Singleton{
//私有构造函数,不希望其他类创建本类的对象
private Singleton(){}
private static Singleton single=null;
private static synchronized Singleton getInstance(){ //synchronized 实现线程安全
if(single==null){
single=new Singleton();
}
return single;
}
//这里涉及到静态修饰符static ,再程序中任何变量或者代码都是再编译时由系统自动分配内存来存储的
而所谓的静态就是指在编译后所分配的内存就会一直存在,知道程序退出内存才会释放这个空间,也就是
只要程序运行,那么这块内存就会一直存在,这么做有什么意思呢?再java程序里面,所有的东西都是对象,而
对象的抽象就是类,对于一个类而言,如果要使用它的成员,那么普通情况下必须先实例化对象后,通过对象的引用
才能够访问这些成员,但是如果该类成员用static 声明,可以直接调用。而被static 修饰的变量,该类的所有对象都会共享
ps:static 可以修饰内部类,调用直接用 new 类名.方法名();
如下:
class TStatic{
static int i;
public TStatic(){
i = 4;
}
public TStatic(int j){
i = j;
}
public static void main(String args[]){
TStatic t = new TStatic(5); //声明,并实例化
TStatic tt = new TStatic(); //同上
System.out.println();
System.out.println(t);
System.out.println();
}
}
输出结果三个都是4
饿汉模式:在类初始化的时候已经自行实例化
public class Singleton{
private static Singleton(){}
private static final Singleton instance=new Singleton();
public static Singleton(){
return instance;
}
}