Java EE에서 관찰자 모델을 사용하고 있습니다. 하나의 서비스가 많은 관찰자에게 이벤트를 시작하도록하는 것이 아이디어입니다. 그러나 모든 관찰자가 동일한 이벤트를 듣고 있지만 각 이벤트는 이벤트 내에서 지정된 특정 이벤트 유형에만 관심이 있습니다. 내 현재 코드는 다음과 같이이다 :특정 이벤트 유형을 관찰하십시오.
public class Service {
public void fireEvent(EventType type) {
MyEvent event = new MyEvent(type);
fire(event);
}
}
public class TypeAObserver {
public void observeEvent(@Observes MyEvent event) {
if (EventType.TYPE_A.equals(event.getType()) {
// do something
}
}
}
public class TypeBObserver {
public void observeEvent(@Observes MyEvent event) {
if (EventType.TYPE_B.equals(event.getType()) {
// do something
}
}
}
당신이 볼 수 있듯이, 모든 관찰자 소스 코드 내에서 반복을 증가 추가 작업을 수행하기 전에 유형을 확인해야합니다. 게다가 모든 옵저버가 동일한 이벤트를 수신하지만 실제로는 소수의 프로세스 만 처리하므로 불필요한 성능 오버 헤드가 발생할 수 있습니다.
Java EE 옆에 새 라이브러리를 사용하지 않고 다른 관측자를 찾고 있으므로 각 관찰자가 특정 유형의 이벤트 만 수신하도록 할 수 있습니다.
감사합니다,하지만 당신은 처음 2 옵션에 대해 자세히 설명 할 수 있습니까? 세 번째 코드는 소스 코드에 더 많은 반복과 복잡성을 도입 할 수 있으므로 모든 이벤트가 거의 유사하게 처리됩니다. –
답변을 업데이트했습니다. 그리고 나는이 경우에 가장 멍청한 것으로 보이는 다른 옵션 (qualifiers)을 추가했다. (그러나 나는 그것을 사용한 적이 없다). – Beryllium