Presentando Coordinator o como evitar flags

  1

¿Cuantas de nuestras clases necesitan crear flags para coordinar varias tareas asincronas? Te presento Coordinator.

Una clase de utilidad que hará que evites flags para coordinar varias acciones. Simplemente almacena una lista de strings como ids de acciones y lanza un callback cuando todas estén terminadas. Este es un código sin Coordinator:

boolean completedOne = false;
boolean completedTwo = false;
 doSomeAsyncWork.callback(onComplete() {
 completedOne = true;
 checkComplete();
 }
 doSomeAsyncWork.callback(onComplete() {
 completedTwo = true;
 checkComplete();
 }
 checkComplete() {
 if (completedOne && completedTwo) {
   launchMyAwesomeAction();
 }
 }

Y este es el mismo código con coordinator:

private static final String ACTION_1 = "ACTION_1";
private static final String ACTION_2 = "ACTION_2";
Coordinator coordinator = new Coordinator(new CoordinatorCompleteAction() {
launchMyAwesomeAction();
}, ACTION_1, ACTION_2);
doSomeAsyncWork.callback(onComplete() {
coordinator.completeAction(ACTION_1);
}
doSomeAsyncWork.callback(onComplete() {
coordinator.completeAction(ACTION_2);
}

Mucho más legible y sin flags.

Written by:

Christian Panadero Martinez