Дело в том что Dependency Injection использует делегирование.
Еще можно ознакомиться с паттернами Bridge и Adapter, вообще многие паттерны используют делегирование.
Я попытался сформулировать чем он мне неудобен в последнем абзаце своей статьи. Моя статья не о том как правильно работать с диалогами в Android, не панацея, нет. Она всего лишь о том, как сделать ожидание реакции пользователя на диалог. Событийная работа с диалогами имеет место быть, это основной механизм работы с ними, его предлагает Android. И в своих проектах я нередко использую этот механизм.
Речь о том, что используя асинхронный подход неудобно организовывать, например, последовательное отображение диалоговых окон(как в windows когда вы пытаетесь удалить список файлов, среди которого есть файлы только для чтения — на каждый такой файл windows задаст вопрос, точно ли вы хотите его удалить). Здесь, в методе processDialogs() реализован цикл, вся логика работа с диалогами в одном месте.
Используя событийный подход приходится создавать «макаронный код», как выше выразился vics001 и представил пример такого кода. Именно этого я и пытался избежать.
Я бы вот еще что хотел отметить, мне часто требуется доступ к разъемам сзади системника, usb, com, lpt, ethernet и т.д. (думаю работающие с железом и микроконтроллерами меня поймут), потому приходится держать системник на столе. Ниша для системника в таком случае вообще неприемлема.
Еще можно ознакомиться с паттернами Bridge и Adapter, вообще многие паттерны используют делегирование.
Речь о том, что используя асинхронный подход неудобно организовывать, например, последовательное отображение диалоговых окон(как в windows когда вы пытаетесь удалить список файлов, среди которого есть файлы только для чтения — на каждый такой файл windows задаст вопрос, точно ли вы хотите его удалить). Здесь, в методе processDialogs() реализован цикл, вся логика работа с диалогами в одном месте.
Используя событийный подход приходится создавать «макаронный код», как выше выразился vics001 и представил пример такого кода. Именно этого я и пытался избежать.
Eще лучше было бы переделать processDialogs в вид:
private void processDialogs(String... questions) throws ERunOnUiThreadException {
if (isUiThread())
throw new ERunOnUiThreadException();
...
}