คุณควรมีชุดอินเทอร์เฟซที่กำหนดไว้อย่างดีซึ่งได้รับอนุญาตให้ส่งหรือรับข้อความ - ให้การอ้างอิงถึง EventScheduler ควรให้ความสำคัญ หากไม่ใช่หรือถ้าคุณรู้สึกว่าเกี่ยวข้องกับการส่งตัวกำหนดเวลาเหตุการณ์ไปยังประเภทที่แตกต่างกัน "มากเกินไป" คุณอาจมีปัญหาในการออกแบบที่ใหญ่กว่าในมือของคุณ (การพึ่งพาอาศัยสำส่อน )
โปรดจำไว้ว่าในขณะที่เทคนิคการส่งตัวกำหนดตารางเวลาไปยังอินเทอร์เฟซที่ต้องการเป็นรูปแบบของ " การฉีดขึ้นต่อกัน " คุณไม่ได้อยู่ในกรณีนี้ในการฉีดการพึ่งพาใหม่ นี่คือการพึ่งพาที่คุณมีอยู่แล้วในระบบ แต่ตอนนี้คุณกำลังทำให้เป็นสิ่งที่ชัดเจน (เทียบกับการพึ่งพาโดยนัยของซิงเกิล) ในฐานะที่เป็นกฎง่ายๆการอ้างอิงที่ชัดเจนมีความเหมาะสมมากกว่าเนื่องจากมีการจัดทำเอกสารด้วยตนเอง
นอกจากนี้คุณยังมีความยืดหยุ่นมากขึ้นด้วยการแยกกลุ่มผู้บริโภคของการกำหนดเวลาเหตุการณ์จากกัน (เนื่องจากไม่จำเป็นต้องเชื่อมโยงกับตัวกำหนดตารางเวลาเดียวกัน) ซึ่งจะเป็นประโยชน์สำหรับการทดสอบหรือจำลองการตั้งค่าไคลเอนต์ / เซิร์ฟเวอร์ในท้องถิ่นหรือตัวเลือกอื่น ๆ - คุณอาจไม่ต้องการตัวเลือกอื่น ๆ แต่คุณยังไม่ได้ใช้ความพยายามในการ จำกัด ตัวเองจากสิ่งเหล่านี้ซึ่งเป็นข้อดี
แก้ไข: ทั้งหมดที่ฉันหมายถึงเมื่อฉันพูดถึงการส่งตัวกำหนดตารางเวลาไปรอบ ๆ คือ: ถ้าคุณมีองค์ประกอบของเกมที่รับผิดชอบในการตอบสนองต่อการชนมันอาจสร้างจากโรงงานตอบกลับการชนที่เป็นส่วนหนึ่งของชั้นฟิสิกส์ของคุณ หากคุณสร้างโรงงานด้วยอินสแตนซ์ของตัวจัดตารางเวลาโรงงานสามารถส่งต่ออินสแตนซ์นั้นไปยังผู้เผชิญเหตุที่สร้างขึ้นซึ่งสามารถใช้ประโยชน์จากการเพิ่มกิจกรรม (หรืออาจสมัครสมาชิกกิจกรรมอื่น ๆ )
class CollisionResponderFactory {
public CollisionResponderFactory (EventScheduler scheduler) {
this.scheduler = scheduler;
}
CollisionResponder CreateResponder() {
return new CollisionResponder(scheduler);
}
EventScheduler scheduler;
}
class CollisionResponder {
public CollisionResponder (EventScheduler scheduler) {
this.scheduler = scheduler;
}
public void OnCollision(GameObject a, GameObject b) {
if(a.IsBullet) {
scheduler.RaiseEvent(E_BIG_EXPLOSION);
}
}
EventScheduler scheduler;
}
เห็นได้ชัดว่านี่เป็นตัวอย่างที่เรียบง่ายและมีการวางแผนอย่างมากเนื่องจากฉันไม่รู้ว่าแบบจำลองวัตถุเกมของคุณคืออะไร; อย่างไรก็ตามมันแสดงให้เห็นถึงการทำให้การพึ่งพาตัวจัดกำหนดการเหตุการณ์อย่างชัดเจนและแสดงให้เห็นถึงความเป็นไปได้บางอย่างสำหรับการห่อหุ้มเพิ่มเติม (คุณไม่จำเป็นต้องผ่านการตอบกลับตัวกำหนดตารางเวลาหากพวกเขาสื่อสารผ่านระบบตอบสนองการชนระดับสูงกว่า โรงงานที่จัดการกับถั่วและสลักเกลียวของการเพิ่มเหตุการณ์ผ่านตัวกำหนดตารางเวลาซึ่งจะแยกการดำเนินการตอบกลับแต่ละรายจากการใช้งานรายละเอียดของระบบการจัดส่งเหตุการณ์เช่นเหตุการณ์เฉพาะที่จะยกระดับการชนกันซึ่งอาจเหมาะสำหรับระบบของคุณ - - หรือไม่).