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

Spring中的設計模式

又是 管理 pla day gif 關聯 動態代理 代理 aop

簡單工廠模式:實質是由一個工廠類根據傳入的參數,動態決定應該創建哪一個產品類。
spring中的BeanFactory就是簡單工廠模式的體現,根據傳入一個唯一的標識來獲得bean對象,但是否是在傳入參數後創建還是傳入參數前創建這個要根據具體情況來定。

工廠方法模式:org.springframework.beans.factory.FactoryBean是一個接口,是Spring中用於定義自定義服務的核心接口,他本身是在bean工廠中定義的一個bean,同時又是用於創建另一個Spring服務對象的工廠。

單例模式:即提供了全局的訪問點BeanFactory。但沒有從構造器級別去控制單例,這是因為spring管理的是是任意的java對象。

代理模式:

Spring Aop 中 Jdk 動態代理 ()就是利用代理模式技術實現的。在 Spring 中除了實現被代理對象的接口外,還會有 org.springframework.aop.SpringProxy 和 org.springframework.aop.framework.Advised 兩個接口。 技術分享圖片 $Proxy 就是創建的代理對象,而 Subject 是抽象主題,代理對象是通過 InvocationHandler 來持有對目標對象的引用的。

策略模式: Spring 中策略模式使用如 Bean 定義對象的創建以及代理對象的創建等。這裏主要看一下代理對象創建的策略模式的實現。 Spring 的代理方式有兩個 Jdk 動態代理和 CGLIB 代理。這兩個代理方式的使用正是使用了策略模式。 技術分享圖片
與標準的策略模式結構有點不同,這裏抽象策略是 AopProxy 接口,Cglib2AopProxy 和 JdkDynamicAopProxy 分別代表兩種策略的實現方式,ProxyFactoryBean 就是代表 Context 角色,它根據條件選擇使用 Jdk 代理方式還是 CGLIB 方式,而另外三個類主要是來負責創建具體策略對象,ProxyFactoryBean 是通過依賴的方法來關聯具體策略對象的,它是通過調用策略對象的 getProxy(ClassLoader classLoader) 方法來完成操作。

模板模式:

jdbcTemplate,hibernateTemplate,JndiTemplate

Spring中的設計模式