Saya mendengar pendapat yang bertentangan seperti:
- "Kelas Manajer Khusus hampir tidak pernah menjadi alat teknik yang tepat"
- "Kelas Manajer Khusus (saat ini) adalah cara terbaik untuk bertahan dari proyek besar dengan ribuan sumber daya"
Mari kita ambil kelas ResourceManager klasik yang memiliki fungsi berikut:
- Memuat aset (tekstur, audio, model 3D, dll)
- Memastikan aset hanya dimuat satu kali dengan menyimpan cache
- Referensi menghitung aset untuk menentukan apakah mereka dapat dialokasikan kembali
- Menyembunyikan dari mana aset sebenarnya berasal (mis., Dapat berupa satu file per aset, atau semua aset dalam satu paket file, atau aset bahkan dapat dimuat melalui jaringan)
- Dapat memuat ulang aset tanpa memulai ulang program, yang sangat berguna bagi para seniman yang mengerjakan permainan.
Mari kita juga mengambil argumen "lajang yang buruk" dari meja dengan berpura-pura bahwa objek-objek ResourceManager ini bukan lajang, dan sebaliknya diteruskan melalui injeksi ketergantungan .
Lalu ada argumen "gunakan pabrik" atau "sebut saja pabrik". Masalah saya dengan ini adalah, ya, itu adalah pabrik, tetapi juga merupakan cache dan reloader (karena tidak ada kata yang lebih baik). Menyebutnya sebuah pabrik tidak menggambarkannya dengan benar, dan jika saya menjadikannya pabrik yang tepat, lalu di mana caching dan reload diimplementasikan?
Saya setuju bahwa kelas "Manajer" sering merupakan gejala dari arsitektur yang buruk, tetapi dalam kasus khusus ini bagaimana bisa direstrukturisasi dan masih mempertahankan semua fungsinya ? Apakah ini situasi di mana kelas "Manajer" sebenarnya sesuai?