Witam.
Chce napisać symulator sygnalizacji świetlnej i zastanawiam się jak to zaprojektować - chciałbym, aby aplikacja była jak najbardziej "poprawnie" napisana.
Pierwsza myśli to podzielić działanie sygnalizacji na kolejne fazy, zrobić jakąś pętlę inkrementującą numer aktualnej fazy a w środku w if'ach zdefiniować jakie światła mają się w danym momencie zapalić.
Coś w ten deseń (pseudo kod):
int phase = 0;
main()
{
do
{
if (phase > 3)
phase = 0;
SetLightsStates(phase);
} while (true)
}
SetLightsStates(int phase)
{
if (phase == 0)
{
SetLightState(Green, On);
SetLightState(Orange, Off);
SetLightState(Red, Off);
}
else if (phase == 0)
{
SetLightState(Green, Off);
SetLightState(Orange, On);
SetLightState(Red, Off);
}
[...]
}
Jednak wydaje mi się, że takie podejście gryzie się z zasadą open-closed
, bo rozbudowa sygnalizatora o np. zieloną strzałkę będzie wymagała modyfikacji istniejących metod.
Z góry dziękuję za naprowadzenie.