이 기사에서는 Java 디자인 패턴의 리스너 모드를 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
리스너 모드에는 이벤트 소스, 이벤트 객체 및 리스너의 세 가지 요소가 있습니다.
이벤트 출처 : 이름에서 알 수 있듯이 클릭 한 버튼과 같은 이벤트의 출처는 듣는 객체에 속합니다.
이벤트 개체 : 이것은 종종 이벤트 소스와 혼동됩니다. 종종 이벤트 소스를 포장하는 데 사용됩니다. 이벤트를 클릭하는 것과 같은 이벤트입니다. 이벤트 소스의 차이점은 이벤트 소스와 다릅니다. 그것을 느낄 방법이 없습니다.
리스너 : 이것은 이벤트가 발생한 후 동작을 정의하는 리스너 모드의 핵심입니다. 일반적으로 이벤트 객체는 리스너에 정의 된 함수로 매개 변수로 입력됩니다.
간단한 밤은 다음과 같습니다.
이야기 배경은 Xiao Ming은 비위생적 인 아이라는 것입니다. 그의 어머니는 건강에 대해 매우 걱정하고 식사 전에 손을 씻어야한다고 규정합니다.
장난 꾸러기 아이를 정의하십시오. 장난 꾸러기 어린이는 모니터링 할 대상, 사건의 원천이며 모든 사건은 사건의 원천에 의해 발송되며, 이는 말도 안되는 것 같습니다.
공개 클래스 아동 {개인 문자열 이름; 개인 리마인드 리스너 REMANDLISTERE; 공개 아동 (문자열 이름) {this.name = 이름; } public void eat () {if (null! = remindlistener) {remindlistener.remind (새로운 remindwashinghandsevent (this)); } system.out.println ( "어린이 먹는 ..."); } public void addListener (remindlistener listener) {remindlistener = 리스너; }}다음은 위에서 언급 한 바와 같이 이벤트 객체를 보는 것입니다. 여기서 우리는 사전 핸드 세척 이벤트를 정의합니다.
공개 수업 Remantwashing Handsevent {개인 아동 자녀; 대중의 상기 시설 핸드 홀 (child child) {this.child = child; }} 이벤트 객체는 이벤트의 속성과 상태를 정의합니다.
이벤트가 발생한 직후, 청취자의 행동은 손을 씻도록 상기시킵니다.
공개 클래스 RemindListener {public void remind (RECANDWASHINGHINGVENT RemanDWASHINGHINGSEVENT) {System.out.println ( "엄마를 듣고, 먹기 전에 손을 씻는 ..."); }}청취자는 주로 동작을 캡슐화합니다. 그게 전부입니다.
위의 코드는 리스너 모드 원칙을 설명하기위한 것이며 코드는 간단하고 우아하지 않습니다.
다음은 Java 표준 라이브러리를 상속하거나 구현하고 한 쌍의 코드를 부담스럽게 씁니다. 밤이 늦었고 시간이 있으면 설명하겠습니다.
공개 클래스 아이 {개인 문자열 이름; 개인 목록 <Leater> liteners; 공개 어린이 (문자열 이름) {this.name = 이름; this.liteners = lists.newarrayList (); } public void eat () {for (청취자 리스너 : liteners) {if (WathinghandsListener의 리스너 인스턴스) {WathingHandsListener WathingHandsListener = (WathingHandsListener) 리스너; WathingHandsListener.FeirTeReventInvoked (New WashingHandsevent ( "손을 씻는")); }} system.out.println ( "Eat ..."); } public void addListener (리스너 리스너) {liteners.add (리스너); }} 공개 클래스 이벤트는 EventObject { /*** 프로토 타입 이벤트를 구성합니다. * * @param 이벤트가 처음 발생한 개체를 소스하십시오. * @throws source가 null 인 경우 불법적 인 경우. */ public event (Object Source) {super (source); }} public class whithhandsevent 확장 이벤트 {private String eventName; /*** 프로토 타입 이벤트를 구성합니다. * * @param 이벤트가 처음 발생한 개체를 소스하십시오. * @throws source가 null 인 경우 불법적 인 경우. */ public whithhandsevent (객체 소스, 문자열 이벤트 이름) {super (source); this.eventName = EventName; } public String getEventName () {return eventName; } public void setEventName (String eventName) {this.eventName = eventName; }} 공개 인터페이스 청취자는 java.util.eventListener를 확장합니다. System.out.println ( "식사 전 준비" + WathingHandsevent.geteventName ()); }} public class test {public static void main (String [] args) {kid xiaoming = new Kid ( "Xiaoming"); xiaoming.addlistener (New ThatingHandsListener ()); xiaoming.eat (); }}출력 결과 :
더 많은 Java 관련 컨텐츠를 보려면이 사이트에 관심이있는 독자는 "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약 및"Java Cache Cache Operation Tips "의 주제를 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.