2つのJavaクラスがあります。最初のクラスは「Index」と呼ばれ、2番目のクラスは一時的に「IndexCache」と呼ばれます。
public class IndexCache {
private static Map<String, Index> map = null;
static {
map = new HashMap<String, Index>();
}
@Override
public Index getIndexString(key) {
Index index = map.get(key);
if (index == null) {
index = new Index("yadayadayada");
map.put(key, index);
}
return index;
}
}
ご覧のとおり、IndexCacheは、同じオブジェクトを何度も作成しないように、インデックスオブジェクトのマップを保持しています。
さて、これはどのようなプログラミング手法ですか?その名前は何でしょうか?
これはcacheと呼ばれ、この手法はcachingと呼ばれます。
キャッシュは、同じデータに対するさらなる要求を高速化するためにデータを格納するものです。そのデータは、コストのかかる計算の結果である可能性があるため、コストのかかる計算を繰り返さないようにキャッシュされます。また、他の場所ですでに事前に計算されているが、取得にコストがかかる一部のデータのコピーである可能性もあります(たとえば、RAMの低速ハードディスクからファイルシステムブロックをキャッシュする、または上のリモートサーバーからHTTPドキュメントをキャッシュする)ローカルプロキシキャッシュ)。
キャッシュには毎回異なる値が動的に入力され、拡大および縮小することもあります。
これはルックアップテーブルとは異なります。静的に入力され、常に同じ値が入力され、多くの場合、ソースコードにハードコードされているか、コンパイル時に事前に計算されます。
メモ化は特殊なケースであり、特に同じ引数を使用して関数適用の結果をキャッシュすることを指します。