Saya telah diberi beberapa kode Java untuk dilihat, yang mensimulasikan perlombaan mobil, yang mencakup implementasi mesin keadaan dasar. Ini bukan mesin negara ilmu komputer klasik, tetapi hanya sebuah objek yang dapat memiliki beberapa negara, dan dapat beralih di antara negara-negara berdasarkan serangkaian perhitungan.
Untuk menjelaskan masalahnya, saya punya kelas Mobil, dengan kelas enum bersarang yang mendefinisikan beberapa konstanta untuk kondisi Mobil (seperti OFF, IDLE, DRIVE, REVERSE, dll). Di dalam kelas Mobil yang sama ini saya memiliki fungsi pembaruan, yang pada dasarnya terdiri dari pernyataan sakelar besar yang mengaktifkan keadaan mobil saat ini, melakukan beberapa perhitungan dan kemudian mengubah keadaan mobil.
Sejauh yang saya bisa lihat, keadaan Cars hanya digunakan dalam kelasnya sendiri.
Pertanyaan saya adalah, apakah ini cara terbaik untuk berurusan dengan implementasi mesin negara yang dijelaskan di atas? Memang terdengar seperti solusi yang paling jelas, tetapi di masa lalu saya selalu mendengar bahwa "pernyataan switch buruk".
Masalah utama yang dapat saya lihat di sini adalah bahwa pernyataan switch mungkin menjadi sangat besar karena kami menambahkan lebih banyak status (jika dianggap perlu) dan kode dapat menjadi sulit digunakan dan sulit untuk dipelihara.
Apa solusi yang lebih baik untuk masalah ini?
object.state = object.function(object.state);