贯穿设计模式-建造者模式+代理模式+原型模式

样例代码

涉及到的项目样例代码均可以从https://github.com/WeiXiao-Hyy/Design-Patterns.git获取

需求

  1. 个人或公司需要开发票时,会有个人发票和企业发票的区别 -> 建造者模式;
  2. 不同业务部门可能都需要使用发票数据,需要拷贝同一份发票 -> 原型模式;
  3. 构造出来的发票建造者方式,需要进行方法增强(例如:银行卡号校验,信息是否合格等等)-> 代理模式;

建造者模式

将不同的组件进行组装,最终生成一个最终的对象。与工厂模式的区别:

  1. 工厂模式和建造者模式都是为了建造对象;
  2. 工厂模式重在结果,只要能够建造对象即可;建造者模式重在构件过程,需要关心如何将不同的信息组装成一个完整的对象;

原型模式

在Java语言中,比较简单,常用的两个方法如下:

  • 实现Cloneable接口重写clone方法即可
  • 实现Serializable序列化

需要区分一下引用拷贝,浅拷贝,深拷贝的区别。

代理模式

一般来对现有方法的增强。

上述是静态代理的UML图,在实战中也需要注意掌握JDK和CGLIB动态代理的原理和适用场景。

相关推荐
杯子不吃紫菜17 小时前
LangGraph 体系实战(下):中断恢复、流式、子图与设计模式
单片机·嵌入式硬件·设计模式
是2的10次方啊20 小时前
设计模式与生活⑳:楼里的事都找前台,你就再没见过师傅
设计模式
是2的10次方啊2 天前
设计模式与生活⑲:投影连不上,别急着换投影仪
设计模式
cjz38993 天前
规则树:把一百行if-else拆成一棵树
设计模式
Adellle3 天前
设计模式指南 (Java 版) ㊁
java·开发语言·设计模式
是2的10次方啊3 天前
设计模式与生活⑱:工资还没焐热,账单已经凑成一摞
设计模式
百思不得小李3 天前
一个复杂的动态表单是如何实现的
前端·设计模式
爱你真是太好了3 天前
上下文组成以及如何压缩
设计模式
freejackman4 天前
【工程化】从“单兵作战”到“多引擎架构”:基于门面模式的重构实战
大数据·数据库·hive·sql·测试工具·设计模式·架构
Java成神之路-4 天前
从 if-else 到优雅解耦:策略 / 适配器 / 组合模式全流程实战
设计模式