データをキャッシュすることと、キャッシュされたデータを使用することは、2 つの異なる問題です。データを取得するためのこのインターフェイスがあるとします。
public interface IDataRepository
{
List<Data> GetData();
}
データベースからデータを取得する実装と、必要に応じてプロキシとして機能し、データをキャッシュする実装の 2 つを実装できます。
public class DataRepository : IDataRepository
{
public virtual List<Data> GetData()
{
//Hit the database and get the data
}
}
public class CachedDataRepository : DataRepository, IDataRepository
{
public override List<Data> GetData()
{
if(!IsCachedAlready())
{
var data = base.GetData();
AddToCache(data);
}
return DataFromCache();
}
}
同じインターフェイスを使用できるようになり、コントローラーで使用しているデータがキャッシュされているかどうかを気にする必要がなくなりました。