1 判断下列代码是否是单例设计模式
package com.lee.java;
public class SingletonTest {
public static void main(String[] args) {
Bank bank1 = Bank.instance;
Bank bank2 = Bank.instance;
System.out.println(bank1 == bank2);
}
}
class Bank{
private Bank(){
}
public static Bank instance = new Bank();
}
static修饰的属性,加载类的时候就被初始化了,后面Bank.Instance只是对它的调用
1.1 由于用户修改,导致不是单例
public class SingletonTest {
public static void main(String[] args) {
Bank bank1 = Bank.instance;
// Bank.instance = null;
Bank bank2 = Bank.instance;
System.out.println(bank1 == bank2);
}
}
class Bank{
private Bank(){
}
public static final Bank instance = new Bank();
}
解决方法:添加final,不让修改
package com.lee.java;
public class SingletonTest {
public static void main(String[] args) {
Bank bank1 = Bank.instance;
//Bank.instance = null;
Bank bank2 = Bank.instance;
System.out.println(bank1 == bank2);
}
}
class Bank{
private Bank(){
}
public static final Bank instance = new Bank();
}