当前位置: 代码迷 >> 综合 >> 装饰者模式 Decorator
  详细解决方案

装饰者模式 Decorator

热度:69   发布时间:2023-12-16 00:03:18.0

一.介绍
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();}}

运行结果:
在这里插入图片描述
四.解析如下
在这里插入图片描述