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

演示结果

相关推荐
ChaseDreamRunner11 分钟前
如何用 NSSM 把 Jar 做成 Windows 服务
java·windows·jar
神の愛12 分钟前
java的Aop
java·开发语言
左左右右左右摇晃24 分钟前
ConcurrentHashMap ——put + get
java·开发语言·笔记
啥咕啦呛36 分钟前
java打卡学习4:HashMap底层结构、扩容机制
java·学习·哈希算法
qq_2975746742 分钟前
K8s系列第十四篇:K8s 故障排查实战:常见故障定位与解决方法
java·docker·kubernetes
Flittly42 分钟前
【SpringAIAlibaba新手村系列】(3)ChatModel 与 ChatClient 的深度对比
java·人工智能·spring boot·spring
朱一头zcy42 分钟前
设计模式入门:最简单的模板方法模式
笔记·设计模式·模板方法模式
2401_835792541 小时前
Java复习上
java·开发语言·python
小昭在路上……1 小时前
编译与链接的本质:段(Section)的生成与定位
java·linux·开发语言
启山智软1 小时前
【智能商城系统技术架构优势】
java·spring·开源·商城开发