设计模式-08
八.开具发票模块
1.建造者模式
建造者模式(Builder Pattern)也叫做生成器模式。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
-
Product 产品类 (电子发票 个人+企业)
-
Builder 抽象建造者 (创建产品的抽象类) 规范产品的组建,一般是由子类实现
-
ConcreteBuilder 具体建造者 (真实创建发票的实现类 个人+企业) 实现抽象类定义的所有方法,并且返回一个组建好的对象。
-
Director 导演类 (调用端,1.直接用 service 层作为导演类; 2 如果你想要对这个建造模块进行一个非常好的封装,那么就单独创建一个导演类。然后 service 调用这个导演类即可) 负责安排已有模块的顺序,然后告诉
Builder 开始建造。 对于导演类,要看我们项目的需求复杂程度,如果 service 层面只有创建的逻辑,那么就无需导演类了,如果还有其他很多相关的逻辑,就做一个导演类。
2.原型模式
原型模式(Prototype Pattern)的简单程度仅次于单例模式。原型模式的核心是一个 clone 方法,通过该方法进行对象的拷贝,Java 提供了一个 Cloneable 接口来标示这个对象是可拷贝的
3.开具电子发票
申请电子发票(企业+个人) 建造者 + 原型(JDK自己有了)
项目需求:
用户支付完成后,部分企业用户或个人账户需要开电子增值税发票,实现该功能。
要求:
-
由于电子增值税发票所需内容较多,而且随国家政策可能会有所修改,发票内容的添加删除及后台对象的组装尽量做到灵活。
-
发票开具不是高并发访问接口且无法缓存,尽量保证发票创建的性能。
代码实现:
4.使用总结
- 创建个人和公司相关的实体类,公司多了银行账户字段;
- 添加发票建造者抽象类;
- 添加个人发票建造者类,复写方法,填充个人发票需要的字段;
- 添加公司发票建造者类,复写方法,填充公司发票需要的字段,并校验银行账户;\
- 添加常量类,初始化个人发票和公司发票实体类,主要是保证创建发票的性能;
- 使用克隆的方式,用到了原型模式来创建实体类,方便快捷;
- 使用的时候在 service 层创建相应的实际 builder 构建者;
- 使用了建造者模式和原型模式;
- 点赞
- 收藏
- 关注作者
评论(0)