さて、最初は何もしないCacheを実装してみます。何もしないというのは、Cacheとしての機能は何も提供せずに、Cacheのsourceに直接アクセスするということです。
public class NoCache implements Cache {
private CacheSource source = null;
public NoCache(CacheSource source) {
this.source = source;
}
public Object read(Object key) throws CacheException {
try {
return source.read(key);
} catch (CacheSourceException e) {
throw new CacheException(e);
}
}
public void write(Object key, Object value) throws CacheException {
try {
source.write(key, value);
} catch (CacheSourceException e) {
throw new CacheException(e);
}
}
public void delete(Object key) throws CacheException {
try {
source.delete(key);
} catch (CacheSourceException e) {
throw new CacheException(e);
}
}
}
まずコンストラクタではCacheSourceとなるオブジェクトを指定しています。Cacheには必ずそのオリジナルであるソールがあるはずですので、それを指定します。指定されたsourceは、このインスタンス内部にある変数sourceに保存し、read、write、deleteの各メソッドで使用します。read、write、deleteの各メソッドは、sourceのメンバであるread、write、deleteを呼び出すだけの機能です。
この一見なんの機能もないNoCacheを実装したのは、これから作成するCache機能の比較対象とするためです。色々なCacheで実装した機能が有効かどうかは、このNoCacheとの比較により明らかにすることが出来ます。