• # Motif de conception « Command »

    Posté par . En réponse au message Siouxerie en java. Évalué à 6.

    Tu fais comme pour Runnable et cie : tu encapsules ta fonction dans un objet. (Donc tu ne passes pas de String. Ce n’est pas propre. Java n’est pas interprété.) Donc, ici :
    interface FonctionBoolStringString {
     boolean applique(String arg);
    }
    Vecteur restrict_elt_with_func(FonctionBoolString func) {
     Vecteur res = new Vecteur();
     if (elementData != null)
     for (int i=0 ; i<elementData.length ; i++) {
     E self_elt;
     self_elt = (E)elementData[i];
     if (func.applique(self_elt))
     res.add(self_elt);
     }
     return res;
    }
    
    Et tu appelles avec :
    restrict_elt_with_func(new FonctionBoolString() {
     boolean applique(String arg) {
     return arg.startsWith("other");
     }
    });
    
    Bon, là j’ai fait l’appel avec un objet anonyme directement issu de l’interface mais tu peux faire des objets nommés issus de classes nommées qui implémentent l’interface FonctionBoolString. Dans le royaume des noms, les verbes sont forcément accompagnés.