Le client peut être une autre classe de la même application ou une classe d’une autre application.
Le design pattern Decorator permet d’étendre dynamiquement
(i.e. à l’exécution) le comportement d’un objet :
Pizza maCommande = new PizzaJambon(new PizzaMozza(new BaseTomate()));
// Zut, la commande n'était pas la bonne, j'ai oublié les ananas... :(
// Ouf, je peux les ajouter en une seule ligne !
maCommande = new PizzaAnanas(maCommande);
Comment représenter une structure arborescente pour permette de manipuler les éléments “feuilles” ET les éléments “composés” de façon uniforme ?
Structure | Éléments composés | Éléments feuilles |
---|---|---|
Un document HTML | Entités HTML | Texte |
Un système de fichiers | Répertoires | Fichiers |
Un arbre généalogique | Personnes avec descendants | Personnes sans descendant |
public static void main(String args) {
Person shmi = new Ancestor("Schmi Skywalker");
Person anakin = new Ancestor("Anakin Skywalker");
Person luke = new LastDescendant("Luke Skywalker");
((Ancestor)shmi).addChild(anakin);
((Ancestor)anakin).addChild(luke);
System.out.println(shmi.getAllDesendantNames());
}