设计模式-结构型-装饰器模式-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();
    }
}

演示结果

相关推荐
杨DaB14 分钟前
【SpringBoot】Swagger 接口工具
java·spring boot·后端·restful·swagger
YA33315 分钟前
java基础(九)sql基础及索引
java·开发语言·sql
桦说编程35 分钟前
方法一定要有返回值 \ o /
java·后端·函数式编程
小李是个程序1 小时前
登录与登录校验:Web安全核心解析
java·spring·web安全·jwt·cookie
David爱编程1 小时前
Java 创建线程的4种姿势,哪种才是企业级项目的最佳实践?
java·后端
hrrrrb2 小时前
【Java Web 快速入门】十一、Spring Boot 原理
java·前端·spring boot
Java微观世界2 小时前
Object核心类深度剖析
java·后端
MrSYJ2 小时前
为什么HttpSecurity会初始化创建两次
java·后端·程序员
hinotoyk2 小时前
TimeUnit源码分享
java
Zyy~3 小时前
《设计模式》工厂方法模式
设计模式·工厂方法模式