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

样例代码

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

需求

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

建造者模式

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

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

原型模式

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

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

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

代理模式

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

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

相关推荐
Old Uncle Tom3 小时前
Agent 技能的五种设计模式
设计模式
祁_z4 小时前
【ReACT 设计模式】(思考 - 行动 - 观察)
设计模式
Makoto_Kimur5 小时前
Spring用了哪些设计模式?
java·spring·设计模式
sg_knight5 小时前
设计模式实战:中介者模式(Mediator)
microsoft·设计模式·中介者模式
geovindu6 小时前
go: Prototype Pattern
开发语言·设计模式·golang·原型模式
我爱cope6 小时前
【从0开始学设计模式-11| 外观模式】
microsoft·设计模式·外观模式
两年半的个人练习生^_^6 小时前
每日一学:设计模式之代理模式
java·设计模式·代理模式
无籽西瓜a7 小时前
【西瓜带你学设计模式 | 第十九期 - 状态模式】状态模式 —— 状态流转与行为切换实现、优缺点与适用场景
java·后端·设计模式·状态模式·软件工程
llm大模型算法工程师weng7 小时前
Java面试核心突破:面向对象与设计模式
java·设计模式·面试
朱一头zcy7 小时前
设计模式入门:简单认识单例模式、模板方法、工厂模式、装饰模式、动态代理
java·设计模式