เช่นเดียวกับหลายสิ่งวิธีการที่ถูกต้องขึ้นอยู่กับสิ่งที่คุณพยายามทำเพื่อปุ่มเฉพาะและสิ่งอื่น ๆ ที่คุณทำกับกิจกรรม
คลาสกิจกรรมใช้อินเทอร์เฟซ :
นี่เป็นตัวเลือกที่ดีเมื่อคุณมีงานประเภทเดียวที่จะดำเนินการเมื่อผู้ฟังนี้ถูกเรียกใช้ ตัวอย่างนี้จะเป็นรูปแบบที่เรียบง่ายที่มีจำนวนฟิลด์และปุ่มบันทึก ฉันไม่ต้องการให้ผู้ฟังเหตุการณ์ตรวจสอบแหล่งที่มาของเหตุการณ์เพื่อตัดสินใจว่าต้องทำอะไรจริง ๆ ฉันรู้ว่าบางคนอาจบอกว่านี่เป็นสิ่งที่มีสไตล์ แต่ฉันเชื่อว่าหากไม่ต้องการให้ผู้ฟังทำการตรวจสอบนี้จะทำให้โค้ดติดตามได้ง่ายขึ้นเนื่องจากคุณจะรู้ว่าสิ่งที่ถูกเรียกสำหรับแต่ละเหตุการณ์
คลาสอื่นใช้อินเทอร์เฟซ :
ตามที่กล่าวไว้ข้างต้นฉันชอบตัวเลือกนี้เมื่อฉันมีหลายรายการที่สามารถเริ่มต้นเหตุการณ์เดียวกันได้ การขยายตัวอย่างด้านบนให้เพิ่มปุ่มล้างที่ต้องใช้ฟังการคลิก สร้างหนึ่งฟังที่ preforms บันทึกการกระทำและหนึ่งที่ preforms การกระทำที่ชัดเจน ผู้ฟังแต่ละคนจะถูกเพิ่มไปยังส่วนประกอบที่จะสร้างการกระทำนั้นเท่านั้น
การใช้งานนี้มีประโยชน์เพิ่มเติมที่คุณสามารถใช้หากคุณสนใจ ประโยชน์คือช่วยป้องกันไม่ให้คลาสอื่นเรียกเหตุการณ์ภายในคลาสกิจกรรมของคุณ เนื่องจากวิธีการอินเทอร์เฟซต้องเป็นสาธารณะทุกคนที่มีการอ้างอิงถึงคลาสสามารถดำเนินการเหตุการณ์ได้ ถ้าคุณต้องการการควบคุมอย่างละเอียดว่าใครสามารถทำอะไรในแอปพลิเคชันได้คลาสที่แยกต่างหากจะป้องกันไม่ให้ใครก็ตามที่มีการอ้างอิงถึงกิจกรรมเพื่อทริกเกอร์แบบฟอร์มของคุณเพื่อเคลียร์หรือบันทึก (หรืออาจทำลายรหัสถ้าผู้ฟัง ไม่จัดการอินพุตที่ไม่ดี)
คลาสภายในที่ไม่ระบุชื่อใช้อินเตอร์เฟส :
นี่เป็นเพียงวิธีเฉพาะในการสร้างตัวเลือกที่สองของการใช้คลาสที่แตกต่างเป็นการใช้งาน ตัวเลือกนี้สามารถ จำกัด ผู้ที่มีสิทธิ์เข้าถึงในการทริกเกอร์เหตุการณ์ได้อีกเนื่องจากไม่มีใครสามารถสร้างตัวอย่างของคลาสได้ อย่างไรก็ตามฉันคิดว่าปัจจัยที่สำคัญกว่าระหว่างตัวเลือกสองตัวคือจำนวนงานที่ทำ การล้างเขตข้อมูลข้อความสองสามเป็นการดำเนินการที่ง่ายและตรงไปตรงมา อย่างไรก็ตามกระบวนการของการบันทึกสำหรับสามารถเกี่ยวข้องกับจำนวนของงานคือคุณกำลังตรวจสอบการป้อนข้อมูล (ซึ่งคุณควรจะทำ) เขียนไปยังฐานข้อมูลเพื่อเก็บค่าและเรียกการกระทำการบันทึกโพสต์ ในกรณีนี้การสร้างคลาสแยกต่างหากด้วยไฟล์ของตัวเองจะทำให้การแบ่งชัดเจนระหว่างแบบฟอร์มอินพุตและการประมวลผลข้อมูล ในทางกลับกันจะเก็บรหัสฟอร์มแทนไฟล์ที่มีขนาดใหญ่กว่าโดยมีคลาสภายในหลายตัวซ้อนอยู่ภายใน