下面簡單介紹一下,餓漢式顧名思義,就是飢不擇食了,不管有沒有需要用這個物件的,先把它給建立好了再說;而懶漢呢,與之相反,只有在外部主動呼叫時,這個物件不存在的情況下才建立,如果已經有這個這個例項物件,那麼直接返回,也不建立了。
這裡再提一下,要使單例模式執行緒安全,可以使用dcl,雙鎖檢測建立單例模式,記得用synchronize或者volidate禁止指令重排序,否則雙鎖檢測可能會出問題。。。
我們可以通過**物件來增強被**物件的某些功能,目的是為了方便控制對某個物件的訪問。
jdk動態**:通過實現invocationhandler,覆寫其中的invoke方法,使用proxy.newinstance方法獲得**物件(記得強制轉換,這個返回的是乙個object的物件)
cglib動態**:在沒有實現上面說的介面的時候,可以使用這個。通過操縱底層位元組碼,動態生成大量**類。(可能就會oom/持久代溢位了) 這個是繼承enhancer並覆寫其中的方法實現。
典型應用:inputstream/reader,我們知道這乙個是位元組流輸入,乙個是字元流輸入,本來兩個是不互通的,這時候再整乙個inputsteamreader,搞定。
典型應用:還是上面的 i/o bufferedinputstream,建構函式裡面接收乙個inputstream類的例項作為引數,將其包裝,得到帶緩衝的位元組流。
設計模式學習筆記七 常用設計模式原則總結
前面學習了一部分建立型模式,發現了乙個比設計模式更重要的東西 設計模式原則。對於設計模式來說,為什麼這個模式要這樣解決這個問題,而另乙個模式要那樣,它們背後都遵循的就是永恆的設計原則。可以說,設計原則是設計模式的靈魂。三大基本物件導向設計原則 1.針對介面程式設計,而不是針對實現程式設計 2。優先使...
常用設計模式
mvc 模型 檢視 控制器 通過 委託其他物件做事情 或者充當某些功能的中間類 觀察者 在乙個物件或者值發生變化時,對它的觀察者發出通知 單例模式 應用程式執行的過程中只有乙個例項 工廠模式 為物件的建立提供統一的介面 簡單工廠模式,工廠方法模式,抽象工廠模式 裝飾模式 為類動態新增方法 一般用ca...
常用設計模式
常用設計模式有工廠模式 道理模式以及生產者消費者模式 使用靜態內部類的方式可以保證執行緒安全,並且比同步方法的效能好。package com.qqyumidi public class singleton 私有化建構函式 private singleton public static singlet...