一、策略模式
把算法或者說行為封裝成類叫倍,然后不同的算法實現(xiàn)為不同的子類象颖,達(dá)到靈活調(diào)用的效果佩厚。把算法封裝在方法中,對外提供了一致的接口说订。?
1抄瓦、bean定義讀取器(BeanDefinitionReader)中,里面的資源加載器(ResourceLoader)陶冷、bean名稱生成器(BeanNameGenerator)钙姊,用了策略模式。
然后埂伦,ClassPathXmlApplicationContext摸恍、FileSystemXmlApplicationContext(覆蓋了方法Resource getResourceByPath(String path))是DefaultResource的子孫類,表示兩種加載xml文件的策略:類路徑赤屋、系統(tǒng)路徑
二立镶、適配器模式
https://blog.csdn.net/w1033162186/article/details/50635348
doDispatch方法中,通過HandlerAdapter的handler對象的handle方法类早,觸發(fā)接口的方法媚媒。HandlerAdapter是適配器,子類有SimpleControllerHandlerAdapter涩僻、SimpleServletHandlerAdapter缭召、RequestMappingHandlerAdapter等栈顷,把Controller子類對象、Servlet對象嵌巷、RequestMapping修飾的方法萄凤,封裝成HandlerAdapter對象,以方便統(tǒng)一調(diào)用搪哪。
為什么使用適配模式:可以看到處理器(寬泛的概念Controller靡努,以及HttpRequestHandler,Servlet晓折,等等)的類型不同惑朦,有多重實現(xiàn)方式,那么調(diào)用方式就不是確定的漓概,如果需要直接調(diào)用Controller方法漾月,需要調(diào)用的時候就得不斷使用if else來進行判斷是哪一種子類然后執(zhí)行。這樣違背了開閉原則胃珍。
三梁肿、代理模式
AOP用代理模式實現(xiàn)的,有JDK動態(tài)代理(需要實現(xiàn)接口)和CGLib代理(直接給字節(jié)碼加代碼)
四觅彰、單例模式
Spring中scope為singleton的bean吩蔑,用到了單例模式。獲取時缔莲,使用了雙重判斷加鎖的機制哥纫。
五、工廠模式
1痴奏、aop中蛀骇,代理的創(chuàng)建用了工廠模式
六、責(zé)任鏈模式