面試集錦(十三)設計模式

2021-09-24 08:38:45 字數 861 閱讀 5442

在spring中,bean可以被定義為兩種模式:prototype(多例)和singleton(單例)

只有乙個共享的例項存在,所有對這個bean的請求都會返回這個唯一的例項。

每次請求都會新建乙個bean例項,相當於new

通過配置bean的

父類定義了建立物件的介面,但是由子類來具體實現,工廠方法讓類把例項化的動作推遲到了子類當中。

spring中非常重要的乙個類abstractfactorybean是利用工廠模式,實現getobject()返回bean例項

使用簡單工廠的優勢是:把物件的使用者和建立者之間解耦,從而提高了系統的擴充套件性。缺陷是:當產品修改時,工廠類也要做相應修改。

這個類用於生成不同的工廠

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新,在被觀察者裡會維護乙個觀察者的集合,當被觀察者的狀態發生改變時會去遍歷集合中的觀察者去執行對應的操作。觀察者uml類圖

不改變原有類的前提下,在原有類某些方法執行前後,插入任意**。所以**模式需要寫新的類對原有的類進行包裝。aop的最大意義是:在不改變原來**的前提下,也不對源**做任何協議介面要求。而實現了類似外掛程式的方式,來修改源**,給源**插入新的執行**。

**模式目前實現的方式有三種:

(1) 靜態**(類似於裝飾器):需要增強原有類的哪個方法,就需要對在**類中包裝哪個方法

(2) 動態**:使用反射機制,方法和物件都是傳入的變數,就可以經過傳入的物件和方法而動態呼叫被**物件的任何方法

(3)cglib**:返回物件是**物件的子類,不需要**物件實現介面。當呼叫原物件方法時,實際上呼叫的是**子類的方法。

設計模式(十三) 外觀模式

定義 為子系統中一組介面提供乙個一致的介面,即定義乙個高層介面,增加子系統的易用性,隱藏系統的複雜性 這種模式涉及到乙個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委託呼叫。主要解決 降低訪問複雜系統的內部系統的複雜度,簡化客戶端與之的介面 如何解決 客戶端和複雜系統之間再加一層,這...

設計模式 十三 組合模式

優點缺點 乙個目錄抽象類 目錄 此時產生了子目錄items,存在遞迴關係。課程目錄 public class coursecatalog extends catalogcomponent 刪除一門課程 override public void add catalogcomponent catalog...

Android設計模式(十三) 狀態模式

1 定義 當乙個物件內在狀態轉變時,允許改變其行為,這個物件看起來改變了其類 2 優點 將與特定狀態相關的行為區域性化,並且將不同狀態的行為分割開來 3 目的 消除龐大的條件分支語句 4 使用 當乙個物件的行為取決於它的狀態,並且它在執行時刻必須根據狀態改變它的行為時,就可以考慮狀態模式 5 描述 ...