2010-12-27 2 views
0

A는 B, C 및 D 객체가 E, F 및 G가 신경 쓰지 않는 곳에 알고있는 것에 관심이있는 것을 게시합니다.구독 서비스를 에뮬레이트하기 위해 필요한 패턴

A가 무언가를 말하면 B, C, D만이 "메시지"를 얻어야합니다.

가장 적합한 디자인 패턴은 무엇입니까?

** Tibco를 사용하지 않고 Tibco를 어떻게 사용합니까?

+0

대신 무엇을 사용하려고합니까? 내 말은 표준 Java 응용 프로그램, 웹 응용 프로그램, 본격적인 J2EE 응용 프로그램 등입니다. – jbx

+0

표준 Java 응용 프로그램입니다. 물체의 방향으로 숫자가 흐른다 고 가정 해 봅시다. 그들은 다른 것에 관계없이 올라오고 있습니다. 동시에 많은 수의 "청취자"가 필요합니다 (선호하는 청취자는 동시에 모든 데이터를 수신합니다). 들어오는 데이터에 따라 일부 청취자는 그렇지 않은 다른 일을합니다. 숫자가 10보다 작 으면 일부 청취자가 이에 응답 할 것이고 다른 숫자는 20보다 큰 숫자 일 경우에만 지원됩니다. – JAM

답변

1

일반적인 J2SE 응용 프로그램의 경우, 이벤트 발행자와 이벤트 구독자가 동일한 프로세스 공간 내의 객체 인 경우 Observer 패턴이됩니다.

구독자는 일반적으로 addListener()와 같은 특정 메서드를 호출하고 특정 인터페이스를 구현하여 이벤트를 수신 대기한다고 알림을 게시자에게 알립니다.

그래서 귀하의 예제에서 우리는 하나의 방법 onNumberEvent (INT 번호)를 가지고있는 인터페이스 NumberEventListener

귀하의 청취자 모든 NumberEventListener를 구현하고 게시자 객체의 addListener()를 호출 할을 만들 말할 수 있습니다.

필터링은 게시자 측 또는 수신기 측에서 적용 할 수 있습니다. 따라서 귀하의 addListener() 메소드는 addListener (NumberEventListener listener, int min, int max)가 될 수 있으며, number가 min과 max 사이 인 경우에만 리스너가 호출됩니다. 그러나 이것은 게시자 코드를 더 복잡하게 만들고 실제로 융통성있게 할 수 없기 때문에 일반적인 구현이 아닙니다.

이러한 예에서 일반적으로 청취자는 모든 해당 이벤트를 수신하고 관심이없는 이벤트는 무시합니다. 실제 실제 시나리오에서는 약간의 차이가 있습니다.

리스너가 '동시에'또는 순차적으로 통지를 받을지 여부는 리스너가 이벤트 게시자에 의해 순차적으로 호출되는지 또는 별도의 스레드에서 호출되는지에 따라 다릅니다.

0

게시 - 구독 메시지 교환 패턴은 어떻게됩니까? 자바에서, JMS는 일반적으로 메시징 서비스를 제공 http://www.eaipatterns.com/PublishSubscribeChannel.html

:

는 또한 엔터프라이즈 통합 패턴에 채널을 구독/게시라고도합니다.

+0

패턴이 호출되는 것입니다. 게시/구독. 이 패턴을 적용하려는 컨텍스트에 따라 달라집니다 ... JMS입니까? – jbx

+0

이것은 관련이 없다, 나는 맥이 SOA와 엔터프라이즈 서비스 버스와 관련된 것들에 관심이 없다고 믿는다. 그는 프로그래밍 디자인 패턴을 필요로한다. – lisak

+0

@lisak, 작은 것을 위해 이것을 적용하든 응용 프로그램을 연결하거나 2 개의 엔터프라이즈 응용 프로그램을 함께 연결하는 데 사용됩니다. 패턴은 그 것이다. JMS는 구현 중 하나 일뿐입니다. (나는 이것이 약간의 시험 문제라고 생각한다) – jbx

0

옵저버 패턴.

또는 필터 체인 패턴이 적용될 수 있습니다. 일부 개체는 메시지의 내용을 기반으로 작업을 수행합니다. 나에게 필터 체인처럼 들린다.

관련 문제