1. 簡單工廠模式(Factory)
Spring 中的 BeanFactory 就是簡單工廠模式的體現(xiàn)寒随,根據(jù)傳入一個唯一的標識來獲得 Bean 對象砌们,但是否在傳入?yún)?shù)后創(chuàng)建還是傳入?yún)?shù)前創(chuàng)建這個要根據(jù)具體情況來定。
2.工廠方法模式(Factory Method)
采用工廠模式,即應用程序?qū)ο蟮膭?chuàng)建及初始化職責交給工廠對象嘉熊。一般情況下,應用程序有自己的工廠對象來創(chuàng)建 Bean.如果將應用程序自己的工廠對象交給 Spring 管理,那么 Spring 管理的就不是普通的 Bean,而是工廠 Bean
3非驮、單例模式(Singleton )
Spring 中的單例模式?jīng)]有從構造器級別去控制單例壕鹉,但提供了全局的訪問點 BeanFactory垄开,這是因為 Spring 管理的是是任意的 Java 對象琴许。 Spring 下默認的 Bean 均為單例
4、原型模式(Prototype)
原型模式就是從一個對象再創(chuàng)建另外一個可定制的對象
5溉躲、代理模式(Proxy)
Spring 的 Proxy 模式在 AOP 中有體現(xiàn)榜田,比如 JdkDynamicAopProxy 和 Cglib2AopProxy。
6锻梳、策略模式(Strategy)
Spring 中在實例化對象的時候用到 Strategy 模式箭券,在 SimpleInstantiationStrategy 有使用
7、模板方法模式(Template Method)
常用于Spring ORM ,例如 JdbcTemplate,RedisTemplate 定義了數(shù)據(jù)庫的常用操作模板方法
8疑枯、適配器模式(Adapter)
Spring AOP 模塊對 BeforeAdvice辩块、AfterAdvice、ThrowsAdvice 三種通知類型的支持實際上是借助適配器模式來實現(xiàn)的荆永,這樣的好處是使得框架允許用戶向框架中加入自己想要支持的任何一種通知類型废亭,上述三種通知類型是 Spring AOP 模塊定義的,它們是 AOP 聯(lián)盟定義的 Advice 的子類型
9屁魏、裝飾器模式(Decorator)
Spring 的 ApplicationContext 中配置所有的 DataSource滔以。這些 DataSource 可能是各種不同類型的捉腥,比如不同的數(shù)據(jù)庫:Oracle氓拼、SQL Server、MySQL 等抵碟,也可能是不同的數(shù)據(jù)源:比如Apache 提 供 的 org.apache.commons.dbcp.BasicDataSource 桃漾、 Spring 提 供 的org.springframework.jndi.JndiObjectFactoryBean 等。然后 SessionFactory 根據(jù)客戶的每次請求拟逮,將 DataSource 屬性設置成不同的數(shù)據(jù)源撬统,以到達切換數(shù)據(jù)源的目的。Spring 中用到的包裝器模式在類名上有兩種表現(xiàn):一種是類名中含有 Wrapper敦迄,另一種是類名中含有Decorator恋追。基本上都是動態(tài)地給一個對象添加一些額外的職責罚屋。除此之外Java中的IO流也是用到了裝飾器模式
10苦囱、觀察者模式(Observer)
Spring 中 Observer 模式常用的地方是 Listener 的實現(xiàn)。如 ApplicationListener脾猛。