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

发票基本类

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

发票正文类

public class Decorator extends Invoice {
    protected Invoice ticket;

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

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

发票头部类

public class HeadDecorator extends Decorator {
    public HeadDecorator(Invoice ticket) {
        super(ticket);
    }

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

发票尾部类

public class FootDecorator extends Decorator {
    public FootDecorator(Invoice ticket) {
        super(ticket);
    }

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

演示类

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

        ticket.printInvoice();
    }
}

演示结果

相关推荐

  1. 设计模式--装饰模式Decorator Pattern)

    2024-04-12 07:44:03       44 阅读
  2. 设计模式装饰模式Decorator Pattern)

    2024-04-12 07:44:03       42 阅读
  3. 装饰模式Decorator

    2024-04-12 07:44:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 07:44:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 07:44:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 07:44:03       82 阅读
  4. Python语言-面向对象

    2024-04-12 07:44:03       91 阅读

热门阅读

  1. 浅谈-“cin 输入弊端”

    2024-04-12 07:44:03       38 阅读
  2. 用php编写网站源码的一些经验

    2024-04-12 07:44:03       41 阅读
  3. 如何在 OpenLDAP 服务器上更改账户密码

    2024-04-12 07:44:03       52 阅读
  4. ubuntu下利用ffmpeg工具将视频帧推流至rtsp

    2024-04-12 07:44:03       47 阅读