首先咱们来写一个简单的单例模式
来念口诀
1.私有化构造器
2.声明一个成员变量来存对象
3.给外部一个可以访问这个成员变量的方法
...........................
public class SingleTon_Test1 {
private static SingleTon_Test1 singleTon_test1;
private SingleTon_Test1() {
}
public static SingleTon_Test1 getinstance(){
if (singleTon_test1==null){
return singleTon_test1 = new SingleTon_Test1();
}
return singleTon_test1;
}
}
................................
但是,在多线程的情况下这样就不安全了所以我们要给它加同步锁:
................................
public class SingleTon_Test2 {
//volatile 禁止JVM对代码的编译执行进行优化保证程序执行的可视化
private static volatile SingleTon_Test2 singleTon_test2;
private SingleTon_Test2() {
if (singleTon_test2!=null){
throw new RuntimeException("不能使用反射破解");
}
}
public static synchronized SingleTon_Test2 getinstance(){
if (singleTon_test2==null){
return singleTon_test2 = new SingleTon_Test2();
}
return singleTon_test2;
}
}
你这样写差不多就能拿满分了..................
懒汉模式的静态内部类写法
public class SingleTon_Test3 {
private SingleTon_Test3() {
}
static class GetIt{
public static final SingleTon_Test3 SINGLE_TON_TEST_3 = new SingleTon_Test3();
}
public static SingleTon_Test3 getInstance(){
return GetIt.SINGLE_TON_TEST_3;
}
}
懒汉模式的枚举写法(了解)
public enum SingleTon2 {
INSTANCE;
public static SingleTon2 getInstance(){
return INSTANCE;
}
}