Wickeln Sie das Objekt ein und erweitern Sie die Funktionalität des umschlossenen Objekts </ font>
Umfassen Sie im String-Code das String-Objekt in Klammern, anstatt neue Funktionen hinzuzufügen.
Überprüfen Sie mit der folgenden Klassenstruktur
Klasse | Erläuterung |
---|---|
abstract Display.class |
Machen Sie es zu einem gemeinsamen Typ für jede Klasse Abstrakte Methode definieren |
Message.class | Erweitern Sie Anzeige Das Zeichenfolgenfeld dieser Klasse wird umbrochen |
Decorator.class | Erweitern Sie Anzeige Implementieren Sie Decorator |
user(Main.class) | Überprüfen Sie den Betrieb |
Unten ist der Beispielcode
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