设计模式-08

举报
kwan的解忧杂货铺 发表于 2024/05/15 06:39:17 2024/05/15
【摘要】 八.开具发票模块 1.建造者模式建造者模式(Builder Pattern)也叫做生成器模式。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Product 产品类 (电子发票 个人+企业)Builder 抽象建造者 (创建产品的抽象类) 规范产品的组建,一般是由子类实现ConcreteBuilder 具体建造者 (真实创建发票的实现类 个人+企业) 实现抽象类定...

八.开具发票模块

1.建造者模式

建造者模式(Builder Pattern)也叫做生成器模式。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  • Product 产品类 (电子发票 个人+企业)

  • Builder 抽象建造者 (创建产品的抽象类) 规范产品的组建,一般是由子类实现

  • ConcreteBuilder 具体建造者 (真实创建发票的实现类 个人+企业) 实现抽象类定义的所有方法,并且返回一个组建好的对象。

  • Director 导演类 (调用端,1.直接用 service 层作为导演类; 2 如果你想要对这个建造模块进行一个非常好的封装,那么就单独创建一个导演类。然后 service 调用这个导演类即可) 负责安排已有模块的顺序,然后告诉
    Builder 开始建造。 对于导演类,要看我们项目的需求复杂程度,如果 service 层面只有创建的逻辑,那么就无需导演类了,如果还有其他很多相关的逻辑,就做一个导演类。

image-20230730115302343

2.原型模式

原型模式(Prototype Pattern)的简单程度仅次于单例模式。原型模式的核心是一个 clone 方法,通过该方法进行对象的拷贝,Java 提供了一个 Cloneable 接口来标示这个对象是可拷贝的

image-20230730115323065

3.开具电子发票

申请电子发票(企业+个人) 建造者 + 原型(JDK自己有了)

项目需求:用户支付完成后,部分企业用户或个人账户需要开电子增值税发票,实现该功能。

要求:

  1. 由于电子增值税发票所需内容较多,而且随国家政策可能会有所修改,发票内容的添加删除及后台对象的组装尽量做到灵活。

  2. 发票开具不是高并发访问接口且无法缓存,尽量保证发票创建的性能。

image-20230730115209589

代码实现:

image-20230730115132757

4.使用总结

  1. 创建个人和公司相关的实体类,公司多了银行账户字段;
  2. 添加发票建造者抽象类;
  3. 添加个人发票建造者类,复写方法,填充个人发票需要的字段;
  4. 添加公司发票建造者类,复写方法,填充公司发票需要的字段,并校验银行账户;\
  5. 添加常量类,初始化个人发票和公司发票实体类,主要是保证创建发票的性能;
  6. 使用克隆的方式,用到了原型模式来创建实体类,方便快捷;
  7. 使用的时候在 service 层创建相应的实际 builder 构建者;
  8. 使用了建造者模式和原型模式;
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。