1. 程式人生 > 其它 >Spring中的設計模式

Spring中的設計模式

IOC:控制反轉

  物件控制權由系統內部轉移到外部容器;不需要我們去new了,達到了解耦的目的;

  結合DI來說,如果沒有IOC容器,當物件A需要使用到物件B的時候必須自己去建立,對A來說這種依賴是主動的;引入IOC之後,當物件A需要使用到物件B時,可以指定IOC容器建立一個物件B注入到物件A中,此時對A來說這種依賴是被動的,也為控制權反轉的體現;

 

實現IOC的設計模式:

工廠設計模式:

  Spring使用工廠模式通過BeanFactory或ApplicationContext建立bean物件;

  BeanFactory: 延遲注入,使用到某個bean時才會注入,佔用更少記憶體,程式啟動速度快;

  ApplicationContext: 容器啟東時,一次性建立所有bean;

單例設計模式:

  優點: 頻繁使用的物件可省去建立時間,對重量級物件而言,省去一筆系統開銷;

     new次數減少,可減輕GC壓力;

  Spring中預設單例;

  實現方式: <bean id="userService" class="top.snailclimb.UserService" scope="singleton"/>   @Scope(value = "singleton")

      原始碼通過ConcurrentHashMap實現單例登錄檔: 檢查快取中是否存在例項,如果不存在,註冊到單例登錄檔;

 

AOP,將與業務無關但為業務模組共同呼叫的邏輯(事務處理,日誌管理,許可權控制)封裝,降低模組間的耦合,提高程式碼複用性,可維護性和可擴充套件性;

代理設計模式:

  基於動態代理;如果要代理的物件實現了某介面,Spring AOP使用JDK Proxy建立代理物件,對於沒有實現介面的物件,Spring AOP使用Cglib生成一個被代理物件的子類作為代理;