我想問,下面兩種設計的區別 。
第一種
public interface ICache<T> {
T getItem(Serializable key) ;
void setItem(Serializable key, T item) ;
}
第二種
public interface ILocalCache<K, V> {
public V get(K key) ;
void setItem(K key, V item) ;
}
第一種跟第二種的區別是key 一個是泛型, 一個是支持序列化。
請問:當分布式緩存時第二種泛型的key是否也持之序列化 ?
越詳細越好 !
理論上支持,因為泛型指代一切類或接口,當然也可以認為是Serializable。
第一種方式,具體實現可以直接作為序列化接口操作,目標明確。
第二種方式,必須做分歧判斷,如果參數是序列化接口,然後作為序列化接口操作。
如果不是那麼也要能處理。
如果key必須使用序列化,也就是說具體實現只支持Serializable這種類型,那麼推薦第一種。
這時,使用第二種方式沒有任何意義,還容易造成對接口功能的誤解而使用錯誤。
如果是要求對Serializable以外的類型也能處理,那麼只能用第二種方式。