数日前に私はthis blog postに出くわしました。これはプラグイン可能なキャッシュマネージャーを提供し、異なるキャッシュプロバイダーを使用しています。このコードスニペットはリポジトリまたはアダプタパターンを使用しますか?
public class CacheManager
{
protected ICacheProvider _repository;
public CacheManager(ICacheProvider repository)
{
_repository = repository;
}
public void Store(string key, object data)
{
_repository.Store(key, data);
}
public void Destroy(string key)
{
_repository.Destroy(key);
}
public T Get<T>(string key)
{
return _repository.Get<T>(key);
}
}
そして最後に、我々は我々自身のプロバイダ書くことができます:
public interface ICacheProvider
{
void Store(string key, object data);
void Destroy(string key);
T Get<T>(string key);
}
とのCacheManagerクラス:基本的に、我々はICacheProviderインタフェースを持っている
public class SessionProvider : ICacheProvider
{
public void Store(string key, object data)
{
HttpContext.Current.Cache.Insert(key, data);
}
public void Destroy(string key)
{
HttpContext.Current.Cache.Remove(key);
}
public T Get<T>(string key)
{
T item = default(T);
if (HttpContext.Current.Cache[key] != null)
{
item = (T)HttpContext.Current.Cache[key];
}
return item;
}
}
まあが、私はかなりよこのコードではhttp://www.dofactory.com/Patterns/PatternAdapter.aspxの定義に基づくアダプタパターンを使用してください。
しかし、リポジトリパターンも使用していると言えるでしょう(通常、リポジトリパターンが使用されているデータの基本的なCRUD操作とは関係ありません)。これは、インターフェイス内のキャッシュマネージャ用の一般的なものをまとめます。
このコードでは、リポジトリパターンとアダプタパターンを使用しているとは言えますか?
あなたはなぜこの答えを改善できますか?ありがとう – Drew
アダプタパターンは、継承またはオブジェクトアダプタを使用して、1つのインターフェイスを他の不一致インターフェイスに変更します。このように実装されたコードはありません。 –