设计模式-第五章-单例模式

167 阅读1分钟

单例模式

代码

public class ChocolateBoiler {
    private boolean empty;
    private boolean boiled;
    //private static ChocolateBoiler uniqueInstance;
    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实例