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

演示结果

相关推荐
码路飞14 分钟前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
SimonKing43 分钟前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员
Seven972 小时前
剑指offer-80、⼆叉树中和为某⼀值的路径(二)
java
怒放吧德德14 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆15 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌18 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊19 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang19 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang20 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解21 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端