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