Java 装饰者模式
2021-01-02 18:20:39 887
接口Printer
public interface Printer {
void start();
void print();
void stop();
}
实现类 HPPrinter
public class HPPrinter implements Printer {
@Override
public void start() {
System.out.println("HP打印机启动");
}
@Override
public void print() {
System.out.println("HP打印机打印");
}
@Override
public void stop() {
System.out.println("HP打印机关闭");
}
}
装饰者-增强-实现Printer接口
public class MyPrinter implements Printer {
private Printer p;
public MyPrinter(Printer p) {
this.p=p;
}
@Override
public void start() {
System.out.println("增强代码");
System.out.println("检查电压");
p.start();
}
@Override
public void print() {
p.print();
}
@Override
public void stop() {
p.stop();
}
}
前提: 可以获取到被装饰的对象实现的所有接口
实现思路: 自定定义装饰类实现接口,为自定义装饰类传递被装饰的对象
弊端:如果被实现的接口中的方法过多,装饰类中的方法过多冗余