Exercice : Décorateur HTML

Code source de l'énoncé

But : pouvoir décorer un texte par des tags HTML (balises i, u, b) :

Complétez le code suivant :
/** Interface implémentée par le composant et les décorateurs **/
interface TexteI{
    public String toHTML();
}

// ICI, classes du pattern décorateur à implémenter

/** Code client **/
public class HTML{
    public static void main(String[] args){
        
        String theString = "Un texte dans une page HTML";
        
        TexteI t1 = new Texte(theString);
        
        System.out.println("=== pas de décoration ===");
        System.out.println(t1.toHTML());
        
        TexteI t2 = new I(new Texte(theString));
        System.out.println("\n=== décoration avec I ===");
        System.out.println(t2.toHTML());
        
        TexteI t3 = new B(new I(new Texte(theString)));
        System.out.println("\n=== décoration avec I et B ===");
        System.out.println(t3.toHTML());
        
        TexteI t4 = new U(new I(new Texte(theString)));
        System.out.println("\n=== décoration avec I et U ===");
        System.out.println(t4.toHTML());
    }
}
de manière à obtenir l'exécution suivante :
java HTML
=== pas de décoration ===
Un texte dans une page HTML

=== décoration avec I ===
<i>Un texte dans une page HTML</i>

=== décoration avec I et B ===
<b><i>Un texte dans une page HTML</i></b>

=== décoration avec I et U ===
<u><i>Un texte dans une page HTML</i></u>