Ho un'interfaccia utente con due caselle di input numerici, importo invio e importo ricezione . I valori sono in valute diverse e sono legati da un tasso di cambio. Ovvero, l'importo di ricezione dovrebbe sempre essere importo di invio * tasso di cambio . Ma l'utente è autorizzato a fare clic nella casella di input e a modificare il valore, il che fa sì che l'altro valore venga aggiornato.
Ho un semplice sistema per osservare le modifiche ad entrambi i valori e aggiornare l'altro. Ho avuto problemi con loop infiniti dei valori che si aggiornano a vicenda perché sono float e moltiplicando quindi dividendo per il tasso di cambio non sempre si crea esattamente lo stesso valore. Così ho aggiunto un semplice flag per ignorare gli aggiornamenti mentre il programma di aggiornamento stesso è in esecuzione.
Ma ora aggiungo più funzionalità quando l'utente aggiorna un campo quantità, richiedendo ad altri oggetti di ascoltare i campi. Di conseguenza alcuni di questi oggetti finiscono per cambiare uno dei campi di quantità, che innesca un ciclo infinito.
Ho sempre pensato che fosse una fragile modellazione del problema, ma non ho pensato a qualcosa di meglio. Esiste uno schema o un approccio stabilito per modellare due valori che si aggiornano a vicenda?