2. Listener 모니터 시스템
그래서 꼭대기 층 에 인터페이스 가 있 습 니 다. com. extjs. gxt. ui. client. event. Observable 은 관찰 자 를 대표 합 니 다.
부분 코드 보 여주 기:
public interface Observable {
public void addListener(EventType eventType, Listener<? extends BaseEvent> listener);
public boolean fireEvent(EventType eventType, BaseEvent be);
public List<Listener<? extends BaseEvent>> getListeners(EventType eventType);
public boolean hasListeners();
public boolean hasListeners(EventType eventType);
public void removeListener(EventType eventType, Listener<? extends BaseEvent> listener);
}
BaseObservable 클래스 가 이 인 터 페 이 스 를 실현 하 였 습 니 다.
우 리 는 일부 중요 한 코드 를 캡 처 하여 분석 해 보 자.
public class BaseObservable implements Observable {
// , false,
private boolean firesEvents = true;
//
private Map<String, List<Listener<BaseEvent>>> listeners;
//
private boolean activeEvent;
// !
public boolean fireEvent(EventType eventType, BaseEvent be) {
if (firesEvents && listeners != null) {
activeEvent = true;
be.setType(eventType);
List<Listener<BaseEvent>> list = listeners.get(getKey(eventType));
if (list != null) {
List<Listener<BaseEvent>> copy = new ArrayList<Listener<BaseEvent>>(list);
for (Listener<BaseEvent> l : copy) {
callListener(l, be);//①
}
}
activeEvent = false;
return !be.isCancelled();//②
}
return true;
}
}
fireEvent 방법 은 사건 을 촉발 시 키 고 자신의 listeners 가 event Type 사건 을 감청 하고 있 는 지 판단 하 며 있 으 면 이 listener 로 하여 금 이 사건 을 처리 하 게 합 니 다.
처리 하기 전에 activeEvent = true 를 설정 하면 처리 중 임 을 표시 하고 처리 가 끝 난 후에 activeEvent = false 를 설정 하면 처리 가 끝 났 음 을 표시 합 니 다.
처리 가 끝 났 을 때 돌아 오 는 것 은:!be.isCancelled()
이 사건 을 취소 해 야 하 는 지 여 부 를 표시 합 니 다.
왜 이런 디자인 이 있 을까요?
listener ① 이 사건 을 처리 할 때 이 사건 을 취소 하고 후속 처 리 를 중단 하려 고 하기 때문이다.그러면 be. setCanceled (true) 를 설정 할 수 있 습 니 다.
이때 돌아 오 는 ②!be. isCanceled () 는 false 입 니 다.
외부 에서 fireEvent 방법 을 호출 하 는 프로그램 은 false 의 반환 값 을 얻 었 습 니 다. 이벤트 가 취소 되 었 음 을 알 고 다음 단 계 를 계속 호출 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.