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