java學習開發中遇到的,設計模式,總結對比

工廠模式(降低耦合度)

參考視頻11分開始

spring的IOC底層,加載配置文件,從配置文件中獲取類名,通過反射,在工廠方發中創建單例bean

在這裏插入圖片描述

適配器模式

spring體系中,很多已Adapter(適配器)結尾的抽象類
如攔截器:繼承抽象類HandlerInterceptorAdapter,或者實現HandlerInterceptor接口都可以
繼承抽象類:假如抽象類有3個方法,你用到了一個,就可以只重寫一個方法即可。
實現接口:則接口的所有抽象方法都必須實現

單例模式:視頻第八分鐘開始

保證對象在內存中的唯一性
在這裏插入圖片描述
實現方式:

1.構造函數私有化(無法在類外部使用new)
2.在類內部創建一個本類對象(私有的靜態成員)
3.提供一個靜態方法獲取到該對象(公有靜態方法可以直接使用類名調用)
static修飾的只加載一次
其中:懶漢式使用對象時纔會被創建,餓漢式就是類加載時對象就會被創建
懶漢式線程安全問題:synchronized
方案一:獲取對象的方法使用synchronized(效率低原因:每個線程都需要判斷鎖)修飾(單機環境)
方案二:使用雙重判斷具體如下(效率高,只有前幾次對象爲空時,纔會判斷鎖)

在這裏插入圖片描述

增強

代理模式(增強)(和裝飾者模式的區別)

參考博客

spring的Aop動態代理(代理對象其實也是對原來對象的增強)
這裏其實有jdk的動態代理,和CGLIB的動態代理(具體區別待研究)
代理模式類之間的關係在編譯時確定,但是要代理的類是不明確的
裝飾者模式的關係在編碼時確定,並且明確了要裝飾的對象

裝飾者模式(增強),與繼承的區別,視頻講的特別好

參考視頻

IO流體系當中,讀(寫)文件是一個一個字節(或字符)
爲了提高效率,加入緩衝技術
BufferedWriter(BufferedReader)
BufferedInputStream(BufferedOutStream)
裝飾類通常會通過構造方法接收被裝飾的對象,並基於被裝飾的對象的功能,提供更強的功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章