單例模式指的是在應用的整個生命週期內只能存在乙個例項。***單例模式是一種被廣泛使用的設計模式。他有很多好處,能夠避免例項物件的重複建立,減少建立例項的系統開銷,節省記憶體。
靜態類就是乙個類裡面都是靜態方法和靜態field,構造器被private修飾,因此不能被例項化。
單例在系統中乙個類只有乙個例項。即乙個類只有乙個物件例項;
靜態類只是提供給你很多靜態方法,這些方法不用建立物件,通過類就可以直接呼叫。
單例模式的靈活性更高,方法可以被重寫(override);
靜態類因為都是靜態方法,所以不能被override。
如果是乙個非常重的物件,單例模式可以懶載入,靜態類就無法做到。
1.不屬於某特定物件的方法比如工具方法,數學方法之類的會設計成靜態方法。
2.如果乙個方法和他所在類的例項物件無關(我的理解是:不依賴其他類例項,也沒有繼承和多型等關係),那麼它就應該是靜態的,否則就應該是非靜態。因此像工具類,一般都是靜態的。
3.如果不滿足上面一條的條件,需要時非靜態的,但是在建立類時又只需要維護乙份例項時,就需要用單例模式。
1、為什麼工具方法寫成靜態方法而不是單例模式?
答:個人理解:如果使用單例類,需要考慮執行緒同步的情況。而靜態方法中,如果沒有共享變數,則不需要考慮執行緒安全問題。
另外附上靜態**在記憶體中的呼叫過程:
靜態類和單例模式區別
單例模式限定為不是全用靜態函式實現的。1。使用的方便性 如果需要初始化工作,單例模式可以在建構函式裡面完成,全靜態函式的類需要乙個額外的函式來完成初始化工作,而且使用者如果沒有呼叫這個initialize函式,那麼後續的操作就會有問題,建構函式會被預設呼叫,所以使用起來比較簡單,對使用者做出了最少的...
靜態類和單例模式區別
觀點一 單例 單例模式比靜態方法有很多優勢 首先,單例可以繼承類,實現介面,而靜態類不能 可以整合類,但不能整合例項成員 其次,單例可以被延遲初始化,靜態類一般在第一次載入是初始化 再次,單例類可以被整合,他的方法可以被覆寫 最後,或許最重要的是,單例類可以被用於多型而無需強迫使用者只假定唯一的例項...
java基礎 單例模式
單例模式 singleton模式 乙個類有且僅有乙個例項,並且自行例項化向整個系統提供 公開 具體實現的角度來說 構造方法私有化 靜態屬性指向例項 public static的getinstance方法,返回第二部的靜態屬性 餓漢模式,無論如何都會建立乙個例項 例子取自 以lol中的大龍 giant...