Il existe un nouveau style de modèle, qui s'inscrit dans le cadre de la nature "tout asynchrone" que l'on peut observer dans des langages tels que JavaScript.
Une grande partie de mon code ressemble à cela aujourd'hui :-)
public class Class1 {
public interface Callback {
void setData(String item1, String item2);
}
public void getThing(Callback callback) {
callback.setData("a", "b");
}
}
public class Class2 {
public void doWithThing(Class1 o) {
o.getThing(new Class1.Callback() {
public void setData(String item1, String item2) {
... do something with item 1 and item 2 ...
}
});
}
}
Pas de nouveaux objets à créer et pas beaucoup de classes supplémentaires puisque l'interface est une classe interne de l'objet.
C'est ce qui rend Swift si génial. Le code peut ressembler à ça :
o.getThing({ item1, item2 -> Void in
... do something with item 1 and item 2 ...
});
Et comme le seul argument est le bloc, même ça :
o.getThing { item1, item2 -> Void in
... do something with item 1 and item 2 ...
};
Java a besoin d'un travail pour rendre le code chargé de callbacks beaucoup plus facile à lire.