2012-03-20 2 views
0

API를 사용하는 Java 시스템이 있습니다. 며칠 전 우리는 다음과 같은 문제에 직면하기 시작했습니다. 원격 API가 시스템에서 너무 많은 요청을 받고있었습니다. 시스템 초기에는 큰 문제가 아니었지만 시스템 성능이 점점 악화되었습니다. 데이터가 커지고 각 엔티티에 대해 여러 요청을했기 때문입니다. 데이터가 자주 업데이트되지 않았기 때문에 내가 만든 네트워크 요청 중 많은 부분이 실제로 필요하지 않은 것으로 나타났습니다. 따라서 시스템을 시작할 때 모든 원격 API 데이터를 over-eager loading으로 만드는 클래스를 구현했습니다. 엔티티를 생성/업데이트 할 때 요청이 이루어지기 전에 엔티티를로드합니다. 나는 그에 따라 삭제를 취급한다. 그리고 원격 API는 변경이 이루어질 때도 알려주므로 시스템 외부에서이 변경 사항이 적용 되더라도 업데이트를 유지할 수 있습니다.이 과열 된 로더 객체가 프록시 패턴 구현의 예입니까?

내가 정말로 알고 싶은 것은 :이 연습에 대한 이름이 있습니까? 알려진 디자인 패턴 ? 나는 약간의 연구를했는데 그것이 proxy pattern이라고 생각합니다. 그러나 실제로는 (대부분의 디자인 패턴이 매우 유사합니다.) 나는별로 확신하지 못합니다. 디자인 패턴.

답변

1

나는 당신이 구현 한 것에 캐시 시스템이라고 부를 것이다. 비록 이것에 대한 dessign 패턴이 있는지 모르겠습니다.

변경 사항이있을 때 원격 API가 사용자에게 알리는 사실은 옵저버 패턴을 사용했을 수 있습니다.

+0

예, 캐시 시스템 일 가능성이 큽니다. 나는 심지어 이런 이름으로 시작했다. 그러나 _cache miss_는 데이터 검색을위한 대체 방법을 사용하여 일반적인 캐시에서 발생할 수있는 것이지만 내 시스템에서는 발생하지 않습니다. 그것은 어떤 종류의 거울입니다. 또한 API가 HTTP POST를 통해 나를 알리기 때문에 Observer 패턴을위한 장소가 없다고 생각합니다. – Cacovsky

0

프록시 패턴이 '지연로드'의 제목 아래에 더 많이 들어가기 때문에 프록시 패턴이 아닙니다. 객체에 대한 액세스를 제어하기위한 Design Patterns (Group of Four Book):

이유 중 하나에 지정된 프록시 패턴의 설명에서 우리가 실제로 그것을

를 사용해야 할 때까지 생성 및 초기화의 전체 비용을 연기하는 것입니다

지나치게 열심히로드하는 것 이외에 무엇을 부를지 모르겠다.

관련 문제