さて、最初は何もしない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との比較により明らかにすることが出来ます。