Spring框架中都用到了哪些設計模式?
Spring框架中都用到了哪些設計模式?
簡單工廠:由一個工廠類根據傳入的引數,動態決定應該建立哪一個產品類。Spring中的BeanFactory就是簡單工廠模式的體現, 根據傳入一個唯一的標識來獲得Bean物件, 但是否是在傳入引數後 建立還是傳入引數前建立這不要根據具體情況來定。
工廠方法:實現了Factory Bean介面的bean是一類叫做factory的bean, 其特點是, spring公在使用getBean()呼叫獲得該 bean時,會自動呼叫該bean的getObject() 方法, 所以返回的不是factory這個bean, 而是這個bean.getOjbect() 方法的返回值。
單例模式:保證一個類僅有一個例項,並提供一個訪問它的全域性訪問點。spring對單例的實現: spring中的單例模式完成了後半句話, 即提供了全域性的訪問點BeanFactory, 但沒有從構造器 級別去控制單例, 這是因為spring管理的是任意的java物件。
介面卡模式:Spring定義了一個適配介面, 使得每一種contro11er有一種對應的介面卡實現類, 讓介面卡代替contro11er執行相應 的方法。這樣在擴充套件Contro11er時, 只需要增加一個介面卡類就完成了Spring MVC的擴充套件了。
裝飾器模式:動態地給一個物件新增一些額外的職責。就增加功能來說, Decorator模式相比生成子類更為靈活。Spring中用到的包裝器模式在類名上有兩種表現:一種是類名中含有Wrapper, 另一種是類名中含有Decorator。
動態代理:切面在應用執行的時刻被織入, 一般情況下, 在織入切面時, AOP容器會為目標物件建立動態的建立一個代理物件。 Spring AOP就是以這種方式織入切面的。 織入:把切面應用到目標物件並建立新的代理物件的過程。
觀察者模式:spring的事件驅動模型使用的是觀察者模式, Spring中observer模式常用的地方是Listener的實現。
策略模式:Spring框架的資源訪問Resource介面, 該介面提供了更強的資源訪問能力, Spring框架本身大量使用了Resource 介面來訪問底層資源。