2012-03-21 3 views
3

DataAccess 클래스가 있고 인터페이스에 대한 참조가 있습니다. 인터페이스는 사용할 캐싱 전략을 나타냅니다.2 개체 간의 상호 참조를 피할 수있는 방법은 무엇입니까?

캐싱 전략에는 시작시 캐시를 채우는 initalize() 메소드가 있습니다. 그러나이 메서드는 DataAccess 클래스에서 데이터에 액세스해야하며 상호 참조로 끝납니다.

또한 모든 구현에서 필요하지 않기 때문에 setter 메소드로 인터페이스를 "오염"시키고 싶지 않습니다. 또한 모든 필드가 최종이되도록 DataAccess 클래스에 setter를 설정하지 않는 것이 좋습니다.

데이터 액세스를 호출하는 추가 레이어를 만들 수 있습니까?

다른 아이디어?

+0

좀 더 명확하게하기 위해 실물 크기의 코드를 게시 할 수 있습니까? – sethu

답변

1

내부 캐시에서 데이터를 가져올 수없는 경우 DataAccess 클래스에만 액세스하는 캐시 조회 클래스로 DataAccess 클래스를 래핑해야합니다. 앞에서 언급 한 것처럼 추가 레이어로 구성되지만 구현 방법에 따라 애플리케이션 코드 (예 : AOP 사용)가 투명해질 수 있습니다.

관련 문제