Java 装饰者模式

kyaa111 3年前 ⋅ 653 阅读

接口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();
	}
	
}

前提: 可以获取到被装饰的对象实现的所有接口

实现思路: 自定定义装饰类实现接口,为自定义装饰类传递被装饰的对象

弊端:如果被实现的接口中的方法过多,装饰类中的方法过多冗余