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