2010-05-16 1 views
0

필자는이 시나리오를 가지고 있습니다. 쿼리 처리기 체인이 있습니다. 첫 번째는 캐시를 쿼리하고 캐시가 응답하지 않거나 응답이 부실 경우 응답을 찾을 수없는 경우 데이터베이스에 연결합니다. 또는 응답이 다시 부실한 경우 원격 웹 서비스에 쿼리합니다.Chain of Responsibility 패턴 : 상호 의존적 인 핸들러를 사용하는 것이 좋은 습관입니까?

그러나이 패턴을 사용하는 것이 올바른지 잘 모르겠다. 작업 흐름이 거의 수정되어 있고 캐시 및 데이터베이스 처리기가 다음 단계의 반환 결과에 따라 레코드를 새로 고침하기 때문입니다.

+0

왜 잘못된 방법일까요? –

+0

@ 로버트 : 내 체인의 처리기가 많이 결합되어있는 것 같습니다. – wei

답변

0

당신이 말하는 것은 엄밀히 말하면, 책임 패턴의 사슬이 아닙니다. 캐시를 구현하는 것처럼 들립니다. 캐시를 구현하는 경우 설명하는 시나리오가 좋습니다. 당신이 책임의 진정한 사슬을 찾고 있다면, 그렇지 않습니다.

0

이렇게 체인 대신 간단한 상속 계층을 구현할 수 있습니다.

Interface 
+getData() 
^ 
| 
RemoteWebserviceImpl 
^ 
| 
DatabaseImpl 
^ 
| 
CacheImpl