设计模式-装饰器
终极管理员 知识笔记 113阅读
design模式-装饰器是将函数动态添加到一个对象中,以实现该对象的继承功能。每个功能可以自由组合。从而降低各功能的耦合度。UML图如下所示。的模拟场景是打印表格(参考java和设计模式)。打印表格时,我们可以分为三个部分:打印表头、打印正文、打印表尾。首先定义打印表格的接口,后面所有的类都要实现这个接口,这叫面向接口编程。代码如下: public interface printable { void print。}第二步是定义打印文本的代码,我们将decorator这个类,也就是修饰它,并添加一些其他函数如下:publiclsprintbodyimplements print table { public void。
style="color: rgba(0, 0, 0, 1)"> print(){System.out.println("Print body!");
}
} 第三步,定义打印表头表尾的代码,如下
打印表头:
public class PrintHeader implements PrintTable {
private PrintTable printTable;
/**
*
*/
public PrintHeader(PrintTable printTable) {
this.printTable = printTable;
}
public void print(){
System.out.println("Print Header!");
printTable.print();
}
}
打印表尾private PrintTable printTable;
/**
*
*/
public PrintHeader(PrintTable printTable) {
this.printTable = printTable;
}
public void print(){
System.out.println("Print Header!");
printTable.print();
}
}
public class PrintFooter implements PrintTable {
private PrintTable printTable;
public PrintFooter(PrintTable printTable) {
this.printTable = printTable;
}
public void print(){
printTable.print();
System.out.println("Print Footer!");
}
}
第四步,测试代码private PrintTable printTable;
public PrintFooter(PrintTable printTable) {
this.printTable = printTable;
}
public void print(){
printTable.print();
System.out.println("Print Footer!");
}
}
public class Test {
public static void main(String[] args) {
PrintBody printBody = new PrintBody();
PrintHeader printHeader = new PrintHeader(printBody);
PrintFooter printFooter = new PrintFooter(printHeader);
printFooter.print();
}
}
执行该测试代码,结果如下:public static void main(String[] args) {
PrintBody printBody = new PrintBody();
PrintHeader printHeader = new PrintHeader(printBody);
PrintFooter printFooter = new PrintFooter(printHeader);
printFooter.print();
}
}
Print Header!
Print body!
Print Footer!
可以看到,在测试代码中,我们可以灵活定义打印格式.

标签: