一.介绍
Decorator(装饰模式)动态地给一个对象添加一些额外的职责。就增加功能而言,装饰模式比生成子类更加灵活。 用于将一个对象加以包装以提供额外的行为]【附加职责】。
菜鸟教程
二.项目结构如下
三.代码如下
package com.djc.test;
//服务生接口
public interface Waiter {
// 服务方法
void service();
}
package com.djc.test;
//女服务生类
public class Waitress implements Waiter {
@Override
public void service() {
// TODO Auto-generated method stub
System.out.println("Waitress的service()方法:女服务生正在服务");
}
}
package com.djc.test;
//Waitress的包装类
public class WaitressWrap implements Waiter {
Waiter waiter = null;
// 匿名对象Waitress的值在构造方法中赋值给了形参waiter,值最后赋值给全局变量waiter
public WaitressWrap(Waiter waiter) {
// super();
// 这里waiter的值实际上是匿名对象Waitress
this.waiter = waiter;
}
//WaitressWrap实现(重写)Waiter接口中的service方法
@Override
public void service() {
// TODO Auto-generated method stub
System.out.println("Waitress包装类WaitressWrap的service()方法:微笑服务顾客");
// 调用匿名对象Waitress的方法service方法
waiter.service();
}
}
测试主类
package com.djc.test;
/**
* @author Sherry
* Decorator(装饰模式)动态地给一个对象添加一些额外的职责。就增加功能而言,装饰模式比生 成子类更加灵活。
* 用于将一个对象加以包装以提供额外的行为]【附加职责】
*/
public class TestDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
WaitressWrap waitressWrap = new WaitressWrap(new Waitress());
waitressWrap.service();
}
}
运行结果:
四.解析如下