ผมเคยเห็นหลายครั้งในซอร์สโค้ดสิ่งเช่นนี้ [ดีนี้เป็นมากกว่าหลอก c ++ ความคิดของฉัน]
typedef shared_ptr<Resource> ResourcePtr;// for ease
ResourcePtr sound1 = resourceManager.Get<SoundResource>("boom.ogg");
sound1->Play();
ResourcePtr sprite = resourceManager.Get<Image>("sprite.png");
ฉันแค่สงสัยว่าคลาสที่มีประโยชน์เช่นนี้เป็นอย่างไรบางสิ่งที่:
- โหลดไฟล์สื่อแล้ว
- เก็บไว้ในหน่วยความจำ
- ทำสิ่งนี้ในตอนเริ่มต้นของหน้าจอการโหลดระดับ
- ทำความสะอาด
แทนที่จะมีระบบ:
- ทรัพยากรถูกครอบครองโดยนิติบุคคลเท่านั้นหรือปล่อยทิ้ง
- รับผิดชอบภาระของตัวเองในหน่วยความจำ
คนแรกคือ 'ผู้จัดการ' เช่นนี้ สิ่งที่ฉันรู้สึกบ่งบอกว่ามันผิดที่จะใช้ อย่างไรก็ตามมันอนุญาตให้บางอย่างเช่นเวกเตอร์ของชื่อทรัพยากรถูกส่งผ่านแทนที่จะต้องแย่งกันหาทุกสิ่งที่ต้องโหลด