Использует ли этот фрагмент кода шаблон репозитория или адаптера? - PullRequest
2 голосов
/ 24 января 2011

Несколько дней назад я наткнулся на это сообщение в блоге , в котором есть подключаемый менеджер кеша для использования разных провайдеров кеша.в основном, у нас есть интерфейс ICacheProvider:

public interface ICacheProvider
{
  void Store(string key, object data);
  void Destroy(string key);
  T Get<T>(string key);
}

и класс CacheManager:

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 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на данных, которые обычно используются в шаблоне Repository).Он оборачивает общие вещи для менеджера кеша в интерфейсе.

Можно ли сказать, что этот код использует шаблон адаптера и шаблон адаптера?

Ответы [ 2 ]

0 голосов
/ 17 декабря 2015

Это похоже на шаблон хранилища.

0 голосов
/ 24 января 2011

Я так думаю, потому что это не репозиторий.

Репозиторий - это набор объектов домена, который преобразует бизнес домена в другое, абстрагированное от самого бизнеса.

ВДругими словами, повторюсь, это не хранилище.

...