目录
前文,我们提到了缓存的5要素
- 对象获取
- 对对象的引用
- 缓存结构
- 线程
- 淘汰算法
在此基础上,我们大可以开始设计一个属于我们的 缓存结构。
考虑到使用的自由扩展性,采用装饰器模式进行设计。一句题外话,装饰器模式普遍用于设计类间的结构关系,通过自由使用装饰类,类的功能可以自由组成并按需使用,如InputStream系列和 OutputStream系列,是Java中的代表。
Interface Cache
首先,一个Cache接口是不可或缺的。接口规定了,缓存需完成输入输出 ,删除,清空和报告大小的方法。
public interface Cache <K,V>{
void putObject(K key, V value);
V getObject(K key);
V removeObject(K key);
void clear();
int size();
}
Class PerpetualCache
接着,第一个实现类 PerpetualCache 可以被完成了,这个类不考虑线程安全,内部用HashMap实现缓存结构,也没有设计 淘汰算法,为了直观展现参量的内容,一个toString方法是可选的。
import java.util.HashMap;
import java.util.Map;
public class PerpetualCache implements Cache<Object, Object> {
private Map<Object, Object> map = new HashMap<Object, Object>();
public void putObject(Object key, Object value) {
map.put(key, value);
}
public Object getObject(Object key) {
return map.get(key);
}
public Object removeObject(Object key) {
return map.remove(key);
}
public void clear() {
map.clear();
}
public int size() {
return map.size();
}
@Override
public String toString() {
return "Perpetual