2011-01-24 5 views
1

数日前に私は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操作とは関係ありません)。これは、インターフェイス内のキャッシュマネージャ用の一般的なものをまとめます。

このコードでは、リポジトリパターンアダプタパターンを使用しているとは言えますか?

答えて

0

これはリポジトリではないので、私はそう思います。

リポジトリは、ドメインビジネスをビジネス自体から抽象化された別のものに変換することを管理するドメインオブジェクトの集合です。

つまり、繰り返しますが、これはリポジトリではありません。

-1

これはリポジトリパターンのようです。

+0

あなたはなぜこの答えを改善できますか?ありがとう – Drew

+0

アダプタパターンは、継承またはオブジェクトアダプタを使用して、1つのインターフェイスを他の不一致インターフェイスに変更します。このように実装されたコードはありません。 –

関連する問題