며칠 전 나는 다른 캐시 공급자를 사용할 수있는 캐시 관리자를 제공하는 this blog post을 발견했습니다.이 코드 스 니펫은 저장소 또는 어댑터 패턴을 사용합니까?
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);
}
}
그리고 마지막으로, 우리는 우리 자신의 제공자 쓸 수 있습니다 : 기본적으로, 우리가 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의 정의를 기반으로 어댑터 패턴을 사용합니다.
하지만 Repository 패턴을 사용한다고 말할 수있는 것처럼 보입니다 (Repository 패턴이 사용되는 곳의 데이터에 대한 기본 CRUD 연산과 아무런 관련이 없음). 인터페이스의 캐시 관리자를위한 일반적인 내용을 정리합니다.
이 코드는 저장소 패턴 과 어댑터 패턴을 사용한다고 할 수 있습니까?
왜이 대답을 향상시킬 수 있습니까? 감사합니다 – Drew
상속 또는 객체 어댑터를 사용하여 하나의 인터페이스를 다른 일치하지 않는 인터페이스로 변경하는 어댑터 패턴. 이와 같이 구현 된 코드는 없습니다. –