为什么会用到装饰者模式?public interface Waiter{
public void service();
}public class Waitress implement Waiter{
@Override
public void service(){
System.out.println("服务");
}
}
啧啧啧!好了,擦一擦口水,我们继续回来看实现类的代码。编写测试类,调用实现类会在控制台打印“服务”两个字,但是要是想让小姐姐笑一笑,再提供服务要怎么做呢
(说白了现在就是要增强waitress类中的service方法啦)public class WaitressWrapper implements Waiter{
private Waiter waiter;
public WaitressWrapper(Waiter waiter){
this.waiter = waiter;
}
public void service(){
System.out.println(“微笑…”)
waiter.service();
}
}
public void Test{
Waiter waiter = new WaitressWrapper(new Waitress)
waiter.service();
}
,不过话说回来,装饰者模式固然好用,它可以增强某个类中的对象,或者方法,但是也是有弊端的,问题就出在增强类要实现的那个接口,既然要实现某个接口就要重写该接口的所有方法,而没有被增强的方法就要原封不动的重新调用一遍。如果该接口中方法少还好,不然也是一项很大的工程呢。好了,今天装饰者模式就说到这里啦,下次我们讲动态代理哦!| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |