Bir de olay kaynaklı mimari bir olay sistemi üzerinden gönderildiğinde her bir bileşeni sadece hareket eder.
Fren pedalına ve fren lambasına sahip bir varsayımsal otomobil hayal edin.
- Fren lambası dönüşler üzerinde bir aldığında brake_on , olay ve kapalı bir aldığında brake_off olayı.
- Fren pedalı bir gönderir brake_on aşağı basıldığında olayı ve brake_off yayımlandıktan olayı.
Otomobilin fren pedalı basılı durumdayken açık olduğu duruma gelinceye kadar bu her şey yolunda ve güzel . Fren lambası hiçbir zaman bir brak__ olayı almadığı için uzak durur - açıkça istenmeyen bir durumdur. Fren lambasını varsayılan olarak açmak sadece durumu tersine çevirir.
Bu 'başlangıç durumu' sorununu çözmek için ne yapılabilir?
EDIT: Tüm cevaplar için teşekkür ederim. Benim sorum gerçek bir araba hakkında değildi. Otomobillerde sürekli olarak devleti göndererek bu sorunu çözdüler - bu nedenle o alanda herhangi bir başlangıç sorunu yok. Yazılım alanımda, bu çözüm birçok gereksiz CPU döngüsü kullanacaktı .
2 EDIT: @ gbjbaanb'ın cevabına ek olarak , hangi bir sistem için gidiyorum:
- varsayımsal fren pedalı, başlattıktan sonra durumu ile ilgili bir olay gönderir ve
- Varsayımsal fren lambası, başlattıktan sonra, fren pedalından bir durum olayı isteyen bir olay gönderir.
Bu çözümle, bileşenler arasında bağımlılık yok, yarış koşulları yok, bayatlayacak mesaj kuyrukları yok ve 'ana' bileşenler yok.
initialize
, ihtiyaç duyulan sensör verilerini içeren bir "sentetik" olay oluşturmak (onu çağırmak ).