三種單例模式的終極寫法(包括反射攻擊)

2021-10-19 07:31:15 字數 1444 閱讀 4341

public class hungrysingleton 

//私有的構造器,不被外部所訪問

private hungrysingleton()

// 防止反射攻擊

}//提供乙個外部獲取hungrysingleton物件的靜態方法

public static hungrysingleton getinstance()

}

public class hungrytest  catch (securityexception e)  catch (nosuchmethodexception e)   catch (instantiationexception e)  catch (illegalacces***ception e)  catch (invocationtargetexception e) 

}}

public class staticinnerclasssingleton 

// 方式反射攻擊

}//私有的靜態內部類

private static class innerclass

//提供乙個公用的對外暴露的方法

public static staticinnerclasssingleton getinstance()

}

public static void main(string args)  catch (securityexception e)  catch (nosuchmethodexception e)   catch (instantiationexception e)  catch (illegalacces***ception e)  catch (invocationtargetexception e) 

}

無法防止反射攻擊

public class lazydoublechecksingleton else

}//提供乙個外部獲取lazydoublechecksingleton物件的靜態方法

public static lazydoublechecksingleton getinstance()}}

return lazydoublechecksingleton;

}}

public class lazydoublechecktest  catch (securityexception e)  catch (nosuchmethodexception e)   catch (instantiationexception e)  catch (illegalacces***ception e)  catch (invocationtargetexception e)  catch (nosuchfieldexception e) 

}}

單例模式的三種寫法

這裡介紹三種單例模式寫法。第一種 餓漢模式 類載入時就初始化 public class singletonhungry public static singletonhungry getinstance 第二種 懶漢模式 類載入時不初始化,當呼叫getinstance方法時初始化 public cl...

單例模式的三種寫法

創造型模式 單例模式 餓漢式 推薦優點 在類載入的時候就已經建立好了例項,沒有執行緒同步的問題 缺點 如果這個例項從始至終都沒有用到,那麼就會造成記憶體浪費 方法一 使用靜態物件 public class singleton 提供乙個靜態方法返回例項物件 public static singleto...

iOS 三種單例模式寫法

單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。一 執行緒不安全 import singl...