设计模式-结构型-装饰器模式-decorator

发票基本类

java 复制代码
public class Invoice {
    public void printInvoice() {
        System.out.println("打印发票正文");
    }
}

发票正文类

java 复制代码
public class Decorator extends Invoice {
    protected Invoice ticket;

    public Decorator(Invoice ticket) {
        this.ticket = ticket;
    }

    @Override
    public void printInvoice() {
        if (ticket != null) {
            ticket.printInvoice();
        }
    }
}

发票头部类

java 复制代码
public class HeadDecorator extends Decorator {
    public HeadDecorator(Invoice ticket) {
        super(ticket);
    }

    @Override
    public void printInvoice() {
        System.out.println("打印发票头");
        super.printInvoice();
    }
}

发票尾部类

java 复制代码
public class FootDecorator extends Decorator {
    public FootDecorator(Invoice ticket) {
        super(ticket);
    }

    @Override
    public void printInvoice() {
        super.printInvoice();
        System.out.println("打印发票尾");
    }
}

演示类

java 复制代码
public class Demo {
    public static void main(String[] args) {
        Invoice t= new Invoice();
        Decorator ticket;
        ticket=new FootDecorator(new HeadDecorator(t));

        ticket.printInvoice();
    }
}

演示结果

相关推荐
期待のcode11 小时前
Dockerfile镜像构建
java·docker·容器
小满、11 小时前
对象住哪里?——深入剖析 JVM 内存结构与对象分配机制
java·jvm·#java对象分配·#hotspot实现
How_doyou_do11 小时前
模态框的两种管理思路
java·服务器·前端
m0_7482480211 小时前
C++ 异常处理全解析:从语法到设计哲学
java·c++·word
仟濹11 小时前
IDEA 软件下载 + 安装 | 操作步骤
java·ide·intellij-idea
毕设源码-赖学姐12 小时前
【开题答辩全过程】以 法院信访投诉平台为例,包含答辩的问题和答案
java·eclipse
依_旧12 小时前
MySQL下载安装配置(超级超级入门级)
java·后端
淘源码d12 小时前
什么是医院随访系统?成熟在用的智慧随访系统源码
java·spring boot·后端·开源·源码·随访系统·随访系统框架
程序猿阿越13 小时前
Kafka源码(七)事务消息
java·后端·源码阅读
m0_7482480213 小时前
C++20 协程:在 AI 推理引擎中的深度应用
java·c++·人工智能·c++20