beanfactory,我們經常會用到beanfactory.getbean(id)獲取物件,這就是簡單工廠的體現。
特點是:工廠類可以建立多種型別的物件,根據不同的引數,可以獲取到不同的物件。
2.1靜態工廠方法
標籤:
2.2例項工廠方法
跟靜態工廠方法的區別在於,靜態工廠方法不用例項化工廠類,而例項工廠方法需要。
標籤:例項化工廠類
物件類:
factory-bean=「instancefactory」 :指定使用哪個工廠例項。
factory-method=「getuser」:使用哪個工廠方法。
2.3 factorybean工廠建立bean
必須實現factorybean介面,重寫三個方法
適用場景:
想在**裡自定義物件的建立邏輯。
標籤:
餓漢式、懶漢式、登錄檔
餓漢式:在類載入就完成物件的初始化
懶漢式:第一次訪問才初始化。會用到雙重檢查鎖
spring用的是單例登錄檔:1.使用map實現登錄檔;2.使用protect修飾構造方法
單例的原始碼與單例的**快取值得注意。
將乙個類的介面轉換成需求希望的另乙個介面。並且能夠結合兩個不同的介面形成統一的介面提供出去。
為什麼重寫呢——提高**的復用性。
組成:target :目標類
adaptee:被適配的類
adapter:適配類
springaop用到介面卡原始碼暫時還不是很懂。
在不改變原有類的基礎上,擴充套件原有物件的功能。
與介面卡不同之處在於,裝飾者注重類的繼承(同宗同源),而介面卡注重介面的轉換。
組成:抽象構建角色(被裝飾介面)
具體構建角色(被裝飾類)
抽象裝飾角色(裝飾介面)
具體裝飾角色(裝飾類)
spring裝飾者模式原始碼還需要理解。
提供一種**以控制對這個物件的訪問。
與裝飾者模式的異同:
同:裝飾者和被裝飾者都實現乙個介面;**類和真實處理的類也都實現同乙個介面。
異:裝飾者模式使用的是外部傳入的被裝飾物件,呼叫者只想要你把他的物件裝飾一下。而**模式使用的是自己構造方法裡面new出來的乙個被**的物件,不是呼叫者傳入的。
裝飾者注重對物件功能的擴充套件,**注重控制物件的訪問。
springaop應用到**模式原始碼需要細讀
觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態上發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。
spring事件驅動由三部分組成:
spring觀察者原始碼還需要認真閱讀。
在spring原始碼中的應用需要認真閱讀。生疏指數高。
《設計模式》 總複習 三
一 單例 singleton 模式 就是在乙個系統裡面 只建立乙個例項,這樣可以保證其唯一性。二 建造者 builder 模式 建造者模式可以將乙個產品的內部表象與產品的生成過程分割開來,從而可以使乙個建造過程生成具有不同的內部表象的產品物件。也就是通過抽象類去規定乙個產品的建造過程。從而根據原產品...
23種設計模式(9)外觀模式
外觀模式是為了解決類與類之家的依賴關係的,降低了類類之間的耦合度,該模式中沒有涉及到介面 1 建立多個類 public class cpu public void shutdown public class memory public void shutdown public class disk ...
Spring框架中的設計模式(三)
這篇文章的第乙個設計模式是原型。可以通過官方文件查詢有關spring作用域中的bean作用域的文章中介紹了類似的概念 prototype 原型設計模式與有用相同名稱的 prototype 作用域有點相似。此設計模式允許通過複製已存在的物件來建立乙個物件的例項。副本應該是真正的副本。這意味著新物件的所...