Как эффективно взаимодействовать между классами?
класс кнопки который что то сортирует, другой класс кнопки что то выводит .....если эффективно то переписать этот ужас.
Кнопка это кнопка, она не должна все это делать, вы можете навесить на нее слушателя и отловить событие, а вот по этому событию что то делать.
Логика и ui должны быть максимально слабо связаны.
по классике юзер инетфейс (кнопки) -> ничего не делают, только генерируют события, которые потом обрабатываются разного рода рабочими (которые сортируют или еще что), и возвращают куда-нибудь результат.
такая модель доказала свою эффективность и повсеместно используется.