2014-10-19 2 views
7

둘 다 공부했지만 실제 차이점을 찾을 수 없었습니다. 뭔가 빠졌습니까? 웹상에서 어떤 사람들은 원자로가 여러 이벤트 동안 하나의 이벤트 만 처리해야한다고 말합니다. 그러나 많은 참관인처럼 원자로가 보일 수 있기 때문에 실제적인 차이는 고려하지 않았습니다. 어떤 차이가 있습니까? 아니면 최신 이름 인 Reactor가 Observer보다 더 시원합니까?옵저버 패턴과 리액터 패턴

덕분에, 카를로

+2

여러면에서 동의합니다. 반응성이 관찰자 패턴의 또 다른 이름입니다. – kenny

답변

7

Reactor Pattern 올바른 처리기에 대한 요청 및 파견을 역 다중화 중개 서비스 핸들러를 사용합니다.

Observer Pattern은 "관찰자"가 제목과 함께 등록하고, 이벤트가 발생할 때 등록 된 모든 관찰자에게 알림을 보냅니다.

중요한 차이점은 반응기 패턴이 중앙 요청 처리기와 함께 처리하는 반면 관찰자 패턴은 소비자가 직접 생산자와 통신 할 수 있다는 점입니다.

실제로 관찰자 패턴은 동적으로 등록 및 등록 취소하는 데있어 더 많은 유연성을 제공 할 수 있습니다. 매우 높은 동시성 응용 프로그램에서는 단일 중간 디스패처가 처리량에 병목을 일으키지 않는 이점을 제공합니다. Lapsed Listener Problem은 또한 관련성이 있습니다. 소비자가 더 이상 알림을받지 않으려는 주제의 등록 취소를 잊었을 때 발생합니다. 가비지 수집 언어에서는 GC가 이러한 이벤트 핸들러를 수집하여 누수 된 참조를 유출하지 못하게합니다. 일반적으로 동적 등록을 사용하지 않는 원자로 패턴 (이론적으로는 가능하지만)에서는 일반적으로 불가능합니다.

+1

반응기는 ** 서버 **에 특정한 문제를 해결합니다. "서버 응용 프로그램은 수신 요청을 해당 서비스 제공 업체로 역 다중화하고 발송해야합니다." 관찰자는 관찰자와 대상을 분리하는보다 일반적인 패턴입니다. – Fuhrmanator