单例模式
代码
public class ChocolateBoiler {
private boolean empty;
private boolean boiled;
private static ChocolateBoiler uniqueInstance = new ChocolateBoiler();
private ChocolateBoiler{
empty = true;
boiled = false;
}
public static ChocolateBoiler getInstance(){
if(uniqueInstance == null ){
uniqueInstance = new ChocolateBoiler();
}
return uniqueInstance;
}
public void fill(){
if(isEmpty()){
empty = false;
boiled = false;
}
}
public void drain(){
if(!isEmpty() && isBoiled()){
empty = true;
}
}
public void boil(){
if(!isEmpty() && ! isBoiled()){
boiled = true;
}
}
public boolean isBoiled() {
return boiled;
}
public boolean isEmpty() {
return empty;
}
}
个人注解
1、单例不能被反复实例化,并且只有一个实例
2、所以初始化实例由类静态方法getInstance来实现
3、为了避免同一时间并发调用getInstance,所以又改成初始化类时就建uniqueInstance实例