讓Singleton模式的類防止攻擊

2021-09-30 07:57:12 字數 375 閱讀 2237

早些時候的singleton模式如下:

老版的單例模式,存在的第乙個問題,乙個有許可權的客戶端可以使用反射機制,呼叫私有構造方法,就可以構建多個例項,這是不希望看到的。所以為了防止反射攻擊,必須在構造方法上檢查建立第二個例項時,丟擲異常。

存在的第二個問題不多見,假如,乙個單例的類,需要被例項化,簡單的乙個實現 serializable 介面是不夠的。

為了保證類是單例的,該類的例項必須是瞬時的(transient),並且提供乙個 readresolve方法,否則反序例化時,會異致第二個類例項的產生。

自jdk1.5發行版開始,我們還有一種方式構建singleton,將更加安全,而且是可序列化的,絕對的單例。

Singleton模式的實現

設計乙個類,我們只能生成該類的乙個例項。因為我們只能生成乙個例項,所以我們必須把建構函式設定為私有函式已禁止他人建立例項。可以定義乙個靜態的例項,在需要的時候建立該例項。public sealed class sinleton1 private static singleton1 instance ...

例項 模組的Singleton模式

singleton模式指的是呼叫乙個類,任何時候返回的都是同乙個例項。對於node來說,模組檔案可以看成是乙個類,怎麼保證每次執行這個模組檔案,返回的都是同乙個例項呢?很容易想到,可以把例項放到頂層物件global。mod.js function a if global.foo module.exp...

單例模式 單例類 Singleton 內含測試類

單例類 singleton public class singleton public void setname string name 1.餓漢式 建立乙個靜態私有物件 private final static singleton instance new singleton 私有化構造方法 pr...