咕泡-裝飾器 decorator 設計模式筆記

裝飾器模式(Decorator)spring

應用場景:在咱們的項目中遇到這樣一個問題:咱們的項目須要鏈接多個數據庫,並且不一樣的客戶在每
次訪問中根據須要會去訪問不一樣的數據庫。咱們以往在Spring 和Hibernate 框架中老是配置一個數據
源,於是SessionFactory 的DataSource 屬性老是指向這個數據源而且恆定不變,全部DAO 在使用
SessionFactory 的時候都是經過這個數據源訪問數據庫。可是如今,因爲項目的須要,咱們的DAO 在
訪問SessionFactory 的時候都不得不在多個數據源中不斷切換, 問題就出現了: 如何讓
SessionFactory 在執行數據持久化的時候,根據客戶的需求可以動態切換不一樣的數據源?咱們能不能
在Spring 的框架下經過少許修改獲得解決?是否有什麼設計模式能夠利用呢?數據庫

首先想到在Spring 的ApplicationContext 中配置全部的DataSource。這些DataSource 多是各
種不一樣類型的,好比不一樣的數據庫:Oracle、SQL Server、MySQL 等,也多是不一樣的數據源:好比
Apache 提供的org.apache.commons.dbcp.BasicDataSource 、Spring 提供的
org.springframework.jndi.JndiObjectFactoryBean 等。而後SessionFactory 根據客戶的每次
請求,將DataSource 屬性設置成不一樣的數據源,以到達切換數據源的目的。
Spring 中用到的包裝器模式在類名上有兩種表現:apache

  • 一種是類名中含有Wrapper
  • 另外一種是類名中含有Decorator
  • 基本上都是動態地給一個對象添加一些額外的職責

相關文章
相關標籤/搜索