1. 程式人生 > >20、設計模式之單例模式-餓漢式

20、設計模式之單例模式-餓漢式

import java.io.Serializable;

/**
 * 餓漢式-單例模式
 * 實現Serializable介面,使其支援序列化與反序列化
 */
public class HungrySingleton implements Serializable {

    private final static HungrySingleton instance;

    static {
        instance = new HungrySingleton();
    }

    private HungrySingleton(){
        // 阻止反射攻擊
        if(instance!=null){
            throw new RuntimeException("單例模式構造器禁止被反射呼叫");
        }
    }

    public static HungrySingleton getInstance(){
        return instance;
    }

    /**
     * 該方法解決反序列化後新物件與原物件記憶體地址不一致的問題
     * @return
     */
    private Object readResolve(){
        return instance;
    }
}