2008-12-12 63 views
0

我打算在我的負載平衡Web應用中使用分佈式緩存。 所以我將嘗試抽象出apache ehcache和memcached之間的通用函數。如何抽象出2個不同的緩存實現

我的目標是能夠做一個簡單的配置開關來選擇要使用的緩存解決方案。我應該去SPI路線,例如比如XML解析器如何連線?

回答

1

從我的頭頂......

  • 創建與普通高速緩存相關的方法接口(加(),刪除(),刷新()來介意最明顯那些)。
  • 創建使用所需緩存(「MyEhCacheImplementation」和「MyMemCachedImplementation」或類似的東西)的接口的實現。
  • 創建一個CacheFactory,它根據數字,String或枚舉等簡單值返回某種類型的緩存。不要忘記爲默認實現做一個回退!
  • 創建一些方法在初始化時向工廠注入單個值,例如,如果您有一些在啓動過程中讀取各種設置的類,或者您正在使用Spring applicationContext.xml或類似的東西,則需要創建一個初始化方法對於接收該參數的緩存,調用工廠並返回正確類型的緩存並/或將其設置到您使用它的某個位置。

我相信這就是所有你需要的結構,使它能夠可靠地工作,並且你可以隨時擴展它,只要你覺得這樣做。

1

修復界面後,這確實是一個創建模式問題。依賴注入是我的最愛,如果緩存選擇策略是動態的,你可以使用spring bean工廠在運行時決定。 Spring支持Web應用程序中的「會話」範圍,這意味着如果您願意,您可以讓工廠根據每個會話進行決策。

否則一個簡單的服務定位器也應該這樣做。

http://en.wikipedia.org/wiki/Service_locator_pattern