2011-01-24 5 views
1

며칠 전 나는 다른 캐시 공급자를 사용할 수있는 캐시 관리자를 제공하는 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 연산과 아무런 관련이 없음). 인터페이스의 캐시 관리자를위한 일반적인 내용을 정리합니다.

이 코드는 저장소 패턴 어댑터 패턴을 사용한다고 할 수 있습니까?

답변

0

저는 이것이 저장소가 아니기 때문에 그렇게 생각합니다.

저장소는 도메인 비즈니스를 비즈니스 자체에서 추상화 된 다른 것으로 변환하는 것을 관리하는 도메인 객체의 모음입니다.

즉, 반복합니다. 이는 저장소가 아닙니다.

-1

저장소 패턴처럼 보입니다.

+0

왜이 대답을 향상시킬 수 있습니까? 감사합니다 – Drew

+0

상속 또는 객체 어댑터를 사용하여 하나의 인터페이스를 다른 일치하지 않는 인터페이스로 변경하는 어댑터 패턴. 이와 같이 구현 된 코드는 없습니다. –

관련 문제