Kelas "Manajer" dapat bermasalah karena berbagai alasan. Dua alasan utama cenderung menjadi:
- namanya tidak jelas (apa sebenarnya yang dimaksud dengan "manajemen", dan apakah selalu sama untuk setiap jenis hal yang dikelola?)
- mereka cenderung menjadi ember fungsionalitas yang melanggar prinsip tanggung jawab tunggal (yaitu, bahwa suatu tipe harus melakukan satu hal)
Seringkali salah satu alasan itu menyebabkan atau menyiratkan yang lain.
Masalah-masalah itu adalah hal yang baik untuk diingat, tetapi jangan biarkan mereka melumpuhkan kemampuan Anda untuk benar - benar membuat permainan Anda . Pada akhirnya tidak ada yang akan peduli apa yang disebut kelas Anda atau apa yang mereka lakukan. Mereka akan peduli dengan game Anda.
Biasanya cukup mudah untuk memisahkan sebagian besar "manajer" menjadi dua bagian:
bagian yang menyimpan objek aktual dan menyediakan akses ke objek tersebut (yang dapat Anda sebut "store," a "repository," a "database," a "cache," atau berbagai hal lainnya. Ini adalah jenis yang biasanya bertanggung jawab untuk seumur hidup dari objek, yaitu, ketika suatu objek dihapus dari atau tidak lagi terkandung oleh turunan dari jenis ini ia tidak ada lagi.
bagian yang memproses objek aktual dan melakukan beberapa pekerjaan padanya. Mungkin memperbarui objek-objek itu (maka itu adalah "pembaru" atau "simulasi") atau mungkin menggambar mereka (maka itu adalah "laci" atau "penyaji"). Atau mungkin melakukan hal lain dengan mereka; yang penting adalah menamainya sesuai dengan tujuan utamanya. Anda biasanya akan memberikan contoh dari jenis ini contoh atau referensi ke contoh dari jenis pertama (yang hanya menangani seumur hidup dari objek).
Argumen yang masuk akal dapat dibuat bahwa nama tipe pertama dapat mencakup manajer (karena "mengatur masa pakai" beberapa objek). Dunia tidak akan berakhir jika Anda menyebutkan tipe Anda dengan demikian, meskipun Anda mungkin perlu memasang reaksi spontan dari bentuk "jangan panggil manajer hal" lebih sering, jadi Anda mungkin ingin menghindarinya hanya untuk itu.