Enveloppez l'objet et étendez les fonctionnalités de l'objet encapsulé </ font>
Dans l'exemple de code, au lieu d'ajouter de nouvelles fonctionnalités, placez l'objet String entre parenthèses.
Vérifiez avec la structure de classe suivante
classe | Explication |
---|---|
abstract Display.class |
Faites-en un type commun pour chaque classe Définir une méthode abstraite |
Message.class | Développer l'affichage Le champ de chaîne de cette classe est enveloppé |
Decorator.class | Développer l'affichage Décorateur de mise en œuvre |
user(Main.class) | Vérifiez le fonctionnement |
Voici l'exemple de code
abstract_class_Display
abstract class Display{
abstract String getStr();
}
Message.class
class Message extends Display{
String msg;
Message(String s){this.msg=s;}
String getStr() {return msg;}
}
Decorder.class
class Decorator extends Display{
Display display;
StringBuffer sb = new StringBuffer();
Decorator(Display d){this.display=d;}
String getStr(){
return makeBorder(display.getStr());}
String makeBorder(String msg){
sb.append("<")
.append(msg)
.append(">");
return sb.toString();
}
}
user(Main.class)
public static void main(String[] args){
Display d1 = new Message("Hello java");
Display d2 = new Decorator(new Decorator(new Decorator(d1)));
System.out.println(d2.getStr());
}
Recommended Posts