工廠模式(降低耦合度)
spring的IOC底層,加載配置文件,從配置文件中獲取類名,通過反射,在工廠方發中創建單例bean
適配器模式
spring體系中,很多已Adapter(適配器)結尾的抽象類
如攔截器:繼承抽象類HandlerInterceptorAdapter,或者實現HandlerInterceptor接口都可以
繼承抽象類:假如抽象類有3個方法,你用到了一個,就可以只重寫一個方法即可。
實現接口:則接口的所有抽象方法都必須實現
單例模式:視頻第八分鐘開始
保證對象在內存中的唯一性
實現方式:
1.構造函數私有化(無法在類外部使用new)
2.在類內部創建一個本類對象(私有的靜態成員)
3.提供一個靜態方法獲取到該對象(公有靜態方法可以直接使用類名調用)
static修飾的只加載一次
其中:懶漢式使用對象時纔會被創建,餓漢式就是類加載時對象就會被創建
懶漢式線程安全問題:synchronized
方案一:獲取對象的方法使用synchronized(效率低原因:每個線程都需要判斷鎖)修飾(單機環境)
方案二:使用雙重判斷具體如下(效率高,只有前幾次對象爲空時,纔會判斷鎖)
增強
代理模式(增強)(和裝飾者模式的區別)
spring的Aop動態代理(代理對象其實也是對原來對象的增強)
這裏其實有jdk的動態代理,和CGLIB的動態代理(具體區別待研究)
代理模式類之間的關係在編譯時確定,但是要代理的類是不明確的
裝飾者模式的關係在編碼時確定,並且明確了要裝飾的對象
裝飾者模式(增強),與繼承的區別,視頻講的特別好
IO流體系當中,讀(寫)文件是一個一個字節(或字符)
爲了提高效率,加入緩衝技術
BufferedWriter(BufferedReader)
BufferedInputStream(BufferedOutStream)
裝飾類通常會通過構造方法接收被裝飾的對象,並基於被裝飾的對象的功能,提供更強的功能