บทความนี้อธิบายโหมดผู้ฟังของรูปแบบการออกแบบ Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
โหมดผู้ฟังมีสามองค์ประกอบ - แหล่งเหตุการณ์วัตถุเหตุการณ์และผู้ฟัง
แหล่งที่มาของเหตุการณ์: ตามชื่อหมายถึงแหล่งที่มาของเหตุการณ์เช่นปุ่มคลิกเป็นของวัตถุที่ฟัง;
วัตถุเหตุการณ์: สิ่งนี้มักจะสับสนกับแหล่งเหตุการณ์ มันมักจะใช้ในการบรรจุแหล่งที่มาของเหตุการณ์ โปรดจำไว้ว่ามันเป็นเหตุการณ์หลังจากทั้งหมดเช่นการคลิกเหตุการณ์ ความแตกต่างระหว่างแหล่งเหตุการณ์นั้นแตกต่างจากแหล่งเหตุการณ์ ไม่มีทางที่จะรู้สึกได้
ผู้ฟัง: นี่คือแกนหลักของโหมดผู้ฟังซึ่งกำหนดการกระทำหลังจากเหตุการณ์เกิดขึ้น โดยปกติวัตถุเหตุการณ์จะถูกป้อนเป็นพารามิเตอร์เป็นฟังก์ชั่นที่กำหนดไว้ในผู้ฟัง
นี่คือเกาลัดที่เรียบง่าย:
พื้นหลังเรื่องราวคือเสี่ยวหมิงเป็นเด็กที่ไม่ถูกสุขลักษณะ แม่ของเขากังวลมากเกี่ยวกับสุขภาพของเขาและกำหนดว่ามือของเธอจะต้องล้างก่อนมื้ออาหาร
กำหนดเด็กซน เด็กซุกซนเป็นวัตถุที่ต้องตรวจสอบแหล่งที่มาของเหตุการณ์และเหตุการณ์ทั้งหมดถูกส่งออกโดยแหล่งที่มาของเหตุการณ์ซึ่งดูเหมือนจะไร้สาระ
เด็กชั้นเรียนสาธารณะ {ชื่อสตริงส่วนตัว; RemindListener ส่วนตัว remindlistener; เด็กสาธารณะ (ชื่อสตริง) {this.name = name; } โมฆะสาธารณะ Eat () {ถ้า (null! = remindListener) {remindListener.remind (ใหม่ remindwashingHandSevent (นี่)); } system.out.println ("เด็กกิน ... "); } โมฆะสาธารณะ addListener (ผู้ฟัง remindListener) {remindListener = ผู้ฟัง; -ถัดไปคือดูที่วัตถุเหตุการณ์ซึ่งดังที่ได้กล่าวไว้ข้างต้นห่อแหล่งเหตุการณ์ ที่นี่เรากำหนดเหตุการณ์การล้างมือก่อนมื้อกิน
ชั้นเรียนสาธารณะ remindwashinghandsevent {เด็กเอกชน; Public RemindwashingHandSevent (เด็กเด็ก) {this.child = เด็ก; - วัตถุเหตุการณ์กำหนดคุณสมบัติและสถานะของเหตุการณ์
ทันทีหลังจากเหตุการณ์เกิดขึ้นการกระทำของผู้ฟังจะได้รับการเตือนให้ล้างมือ
ชั้นเรียนสาธารณะ remindListener {โมฆะสาธารณะ remind (remindwashinghandsevent remindwashinghandsevent) {system.out.println ("ฟังแม่ล้างมือก่อนรับประทานอาหาร ... "); -โปรดทราบว่าผู้ฟังส่วนใหญ่สรุปการกระทำนั่นคือทั้งหมด
รหัสด้านบนเป็นเพียงเพื่อแสดงหลักการโหมดผู้ฟังและรหัสนั้นง่ายและไม่หรูหรามาก
ต่อไปนี้สืบทอดหรือดำเนินการไลบรารีมาตรฐาน Java และเขียนรหัสคู่หนึ่ง ตอนดึกแล้วฉันจะอธิบายถ้าฉันมีเวลา
เด็กชั้นสาธารณะ {ชื่อสตริงส่วนตัว; รายการส่วนตัว <Sistener> Liteners; เด็กสาธารณะ (ชื่อสตริง) {this.name = name; this.liteners = lists.newarraylist (); } โมฆะสาธารณะ Eat () {สำหรับ (ผู้ฟัง (ผู้ฟัง: liteners) {ถ้า (อินสแตนซ์ฟังของ Washinghandslistener) {WashingHandsListener Washinghandslistener = (WashingHandsListener) ผู้ฟัง; Washinghandslistener.firefereventinvoked (Washinghandsevent ใหม่ (นี่ "ล้างมือของคุณ")); }} system.out.println ("กิน ... "); } โมฆะสาธารณะ addListener (ผู้ฟังผู้ฟัง) {liteners.add (ผู้ฟัง); }} เหตุการณ์ระดับสาธารณะขยาย EventObject { /*** สร้างเหตุการณ์ต้นแบบ * * @param แหล่งที่มาวัตถุที่เกิดขึ้นครั้งแรก * @THROWS unglemalargumentException ถ้าแหล่งที่มาเป็นโมฆะ */ เหตุการณ์สาธารณะ (แหล่งที่มาของวัตถุ) {super (แหล่งที่มา); }} คลาสสาธารณะ WashingHandsevent ขยายเหตุการณ์ {private String eventName; /*** สร้างเหตุการณ์ต้นแบบ * * @param แหล่งที่มาวัตถุที่เกิดขึ้นครั้งแรก * @THROWS unglemalargumentException ถ้าแหล่งที่มาเป็นโมฆะ */ Public WashingHandSevent (แหล่งที่มาของวัตถุ, String EventName) {Super (Source); this.eventName = EventName; } สตริงสาธารณะ getEventName () {return eventName; } โมฆะสาธารณะ setEventName (String eventName) {this.eventName = EventName; }} ผู้ฟังอินเตอร์เฟสสาธารณะขยาย java.util.eventListener {โมฆะสาธารณะ fireftereventinvoked (เหตุการณ์เหตุการณ์);} คลาสสาธารณะ Washinghandslistener ใช้ผู้ฟัง {@Override void fireftereventinvoke (เหตุการณ์เหตุการณ์) System.out.println ("การเตรียมการก่อนมื้ออาหาร" + washinghandsevent.getEventName ()); }} การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {kid xiaoming = เด็กใหม่ ("xiaoming"); xiaoming.addlistener (ใหม่ washinghandslistener ()); xiaoming.eat (); -ผลลัพธ์ผลลัพธ์:
สำหรับเนื้อหาที่เกี่ยวข้องกับ Java เพิ่มเติมผู้อ่านที่สนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินการ Java Dom Node", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน