나는 강하게 아직 연주하지 않았다고 고백하지만, 청취자 코드가 매퍼에없는 것이 맞다고 생각한다. 오히려 외부 클래스에서 단독으로 사용할 수 있으므로 구독하는 이벤트를 처리하는 단일 책임 객체 일 수 있으며 코드는 최대한 DRY 상태를 유지할 수 있습니다.
첫 단계로 청취자가 자신의 직업을 수행하는 데 필요한 것을 정의 할 수 있습니다. 인스턴스화에 대해 알고있는 일부 사항, 이벤트가 트리거 될 때 전달해야하는 항목이 있습니다.
예를 들어, 캐시 수신기의 경우 캐시, 수명 등의 정보를 부트 스트랩에서 인스턴스화 할 수 있습니다. 캐시 인스턴스를 완전히 구성하고 cachemanager 리소스에서 이동할 준비가되어있을 수도 있습니다. 이들은 리스너 객체의 생성자 매개 변수가 될 수 있습니다.
그럼에도 불구하고 여전히 부트 스트랩에서이 청취자를 이벤트 관리자에 등록하고 이벤트에 가입하고 이벤트가 트리거 될 때 실행할 메소드를 첨부 할 것입니다. 물론, 그 메소드 서명은 이벤트 매니저가 당신에게 줄 정보와 호환 될 필요가있다.
나는 생각이 리스너 객체의 잠재적 인 이득이 있다는 추측 : 단일 responsibilty, 너무 낮은 복잡성과 쉽게 테스트 할 인
을
잘하면 충분히 일반 인이되도록 단일 리스너는 여러 이벤트를 처리 할 수 있습니다.
약간의 주름이 있습니다. 일부 다운 스트림 프로세스가 자신이 가입 한 이벤트를 트리거 할 가능성이있는 경우에만 청취자를 인스턴스화하고 등록하는 것이 부당한 성능으로 보일 수 있습니다. 그것은 정적 리스너가 들어오는 곳입니다. 다시 등록은 부트 스트랩과 같이 일찍 완료되지만 리스너는 실제로 필요할 때까지 인스턴스화되지 않습니다.
공개 : 나는 완전히 잘못했을 수 있습니다. 그래서 누군가가 나를 똑바로하고 싶다면 그것은 좋을 것입니다. ;-)