单例(态)设计模式
1、保证一个类在堆内存里面从始至终只存在一个实例(对象)
2、只能通过一个方式(一种方法)访问到这个对象
例一:
public class Null01 {
//保证一个类在堆内存里面从始至终只存在一个实例(对象)
//将s1这个变量私有化
private static final Null01 s1=new Null01();
//将当前类的对象私有化,外界的类就不能new对象了
//所以得给外界的类提供一个方法,将当前类的对象提供出去
private Null01(){
}
//只能通过一个方式(一种方法)访问到这个对象
public static Null01 getInstance(){
return s1;
}
}
测试类:
public class Test01 {
public static void main(String[] args) {
//多个引用指向了一个对象(对内存里从始至终只存在一个对象)
Null01 s1=Null01.getInstance();
Null01 s2=Null01.getInstance();
Null01 s3=Null01.getInstance();
Null01 s4=Null01.getInstance();
}
}
例二:
//单例设计模式第二中写法
public class Null02{
private static Null02 s2=null;
//构造方法私有
private Null02(){
}
//关键字synchronized:同步(锁),同一时刻保证一个线程进去,保证程序安全性
//关键字async:(异步)
public synchronized static Null02 getInstance(){
if (s2==null) {
s2=new Null02();
}
return s2;
}
}
测试类:
public class Test02 {
public static void main(String[] args) {
//多个引用指向了一个对象(对内存里从始至终只存在一个对象)
Null02 s2=Null02.getInstance();
Null02 s3=Null02.getInstance();
Null02 s4=Null02.getInstance();
Null02 s5=Null02.getInstance();
}
} |
|