Dalam arsitektur yang digerakkan oleh peristiwa, setiap komponen hanya bertindak ketika suatu peristiwa dikirim melalui sistem.
Bayangkan sebuah mobil hipotetis dengan pedal rem dan lampu rem.
- Rem bergantian cahaya pada saat menerima brake_on acara, dan off ketika menerima brake_off acara.
- Pedal rem mengirimkan acara brake_on saat ditekan ke bawah, dan acara brake_off saat dilepaskan.
Ini semua baik dan bagus, sampai Anda memiliki situasi di mana mobil dihidupkan dengan pedal rem sudah ditekan . Karena lampu rem tidak pernah menerima acara rem_on , lampu rem akan tetap mati - jelas situasi yang tidak diinginkan. Menyalakan lampu rem secara default hanya membalikkan situasi.
Apa yang bisa dilakukan untuk menyelesaikan 'masalah keadaan awal' ini?
EDIT: Terima kasih atas semua tanggapan. Pertanyaan saya bukan tentang mobil yang sebenarnya. Di mobil mereka memecahkan masalah ini dengan terus mengirim negara - karena itu tidak ada masalah startup di domain itu. Dalam domain perangkat lunak saya, solusi itu akan menggunakan banyak siklus CPU yang tidak perlu.
EDIT 2: Selain jawaban @ gbjbaanb , saya akan mencari sistem di mana:
- pedal rem hipotetis, setelah inisialisasi, mengirimkan peristiwa dengan kondisinya, dan
- lampu rem hipotetis, setelah inisialisasi, mengirimkan peristiwa yang meminta keadaan peristiwa dari pedal rem.
Dengan solusi ini, tidak ada ketergantungan antara komponen, tidak ada kondisi balapan, tidak ada antrian pesan untuk basi, dan tidak ada komponen 'master'.
initialize
) yang berisi data sensor yang dibutuhkan.