Jawaban Gregory Weir adalah favorit saya untuk bagaimana menyusun contoh item untuk melakukan beberapa peran.
Untuk memuat dari file:
Pertama, gunakan YAML. YAML adalah bahasa deskripsi data yang memiliki fitur; itu dapat diurai relatif cepat, dibaca dan diedit oleh manusia, mendukung data biner, dan perpustakaan ada untuk sebagian besar bahasa pemrograman, termasuk Java. Ini memecahkan "bagaimana cara saya mendapatkan data dari file ke objek?"
Kedua, gunakan pola bobot terbang . Sebagian besar data yang Anda baca dari file-file itu statis. Ini tidak akan berubah per instance ("kapak merusak 1d10 dan merusak kayu tetapi bukan batu" - itu benar dari kelima kapak yang dimiliki pemain). Apa yang sebenarnya Anda baca dari file YAML adalah definisi platonis ini, dan instance item individual Anda memiliki referensi yang tidak dimiliki (dan konstan) untuk ini, bersama dengan data per-instance seperti "Berapa ayunan sebelum saya putus?", "Apakah pemain memberikan saya nama khusus? ", dan seterusnya.
Dengan berbagi data lintas-contoh dalam satu objek, Anda menghemat banyak memori, dan membuatnya mudah untuk memperbarui item tanpa status permainan yang bertahan lama (simpan game atau basis data pemain).
Jadi struktur kelas Anda terlihat seperti:
- Item kelas - Satu instance per item
- Own-a Weapon instance
- Own-a Tool instance
- Memiliki-nama khusus, dll.
- class Weapon - (Hingga) satu instance per item
- Is-a ItemComponent
- Merujuk pada WeaponDef
- Memiliki tingkat pesona bonus, dll.
- Alat kelas - (Hingga) satu instance per item
- Is-a ItemComponent
- Merujuk pada ToolDef
- Memiliki daya tahan, dll.
- class WeaponDef - Satu instance per jenis senjata
- Baca dari file, bidang harus konstan.
- Memiliki-jumlah kerusakan dasar, 1 atau 2 tangan, dll.
- class ToolDef - Satu instance per jenis alat
- Baca dari file, bidang harus konstan.
- Memiliki daya tahan dasar, bahan yang bisa pecah, dll.