spring框架中用到了哪些設計模式


1、代理模式:在AOP和remoting中被用的比較多

2、單例模式:在spring配置文件中定義的bean默認為單例模式

3、模板方法模式:解決代碼重復問題

父類定義骨架(共同方法的實現,調用哪些方法及順序),某些特定方法由子類實現(父類是空方法,子類繼承后再重寫)

4、前端控制器模式:spring提供了DispatcherServlet來對請求進行分發

5、依賴注入模式:貫穿於BeanFactory和ApplicationContext接口的核心理念

6、工廠模式:

(1)簡單工廠:

實現方式:BeanFactory根據傳入一個唯一的標識來獲得bean對象,由工廠類根據傳入的參數動態決定應該創建哪一個產品類

實現原理:

bean容器的啟動階段:讀取bean的xml配置文件,將bean元素分別轉換成一個BeanDefinition對象。然后通過BeanDefinitionRegistry將這些bean注冊到beanFactory中。

容器中bean的實例化階段:主要通過反射或者CGLIB對bean進行實例化

(2)工廠方法:

實現方式:FactoryBean接口

實現原理:實現了FactoryBean接口的bean是一類叫做factory的bean,特點是spring會在使用getBean()調用獲得該bean時,自動調用該bean的getObject()方法。返回的是這個bean.getObject()方法的返回值。

典型例子:spring與mybatis的結合:

<bean  id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" ><bean>

//最終返回的是SqlSessionFactoryBean.getObject()的返回值

 

7、適配器模式

實現方式:springmvc中的適配器HandlerAdapter

實現過程:dispatcherServlet根據HandlerMapping返回的handler,向HandlerAdapter發起請求,處理handler。HandlerAdapter根據規則找到對應的Handler並讓其執行,執行完畢后Handler會向HandlerAdapter返回一個ModelAndView,最后由HandlerAdapter向dispatcherServlet返回一個ModelAndView

8、裝飾器模式:

實現方式:類名中包含Wrapper,或者是Decorator,就是裝飾器模式

實質:動態地給一個對象添加一些額外的職責,比生成子類更靈活

9、觀察者模式

實現方式:spring的事件驅動模型使用的是觀察者模式,常用的地方就是listener的實現

具體實現:事件機制的實現包括事件源、事件、事件監聽器:

ApplicationEvent抽象類【事件】

ApplicationListener接口【事件監聽器】

ApplicationContext接口【事件源】

10、策略模式

實現方式:spring框架的資源訪問Resource接口,是具體資源訪問策略的抽象,也是所有資源訪問類所實現的接口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM