Сохранить массив обратных вызовов функций в качестве «наблюдателей». Когда что-либо меняет логическое значение с помощью вашей интерфейсной функции (например, setBooleanValue (True);), затем выполняйте итерацию по массиву обратных вызовов и вызывайте каждую функцию, чтобы уведомить наблюдателей.