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

样例代码

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

需求

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

建造者模式

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

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

原型模式

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

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

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

代理模式

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

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

相关推荐
一块plus1 小时前
深度详解 Revive 和 Precompile 技术路径
后端·设计模式·架构
肩上风骋3 小时前
建造者模式
建造者模式
智想天开3 小时前
31.设计模式的反模式与常见误区
设计模式
小飞悟5 小时前
组件通信的艺术:从 props 钻井到 context 共享的进化之路
前端·javascript·设计模式
Point5 小时前
[ahooks] useEventEmitter源码阅读
前端·javascript·设计模式
鸡蛋灌Bean5 小时前
Java常用设计模式大全
java·开发语言·设计模式
喝可乐的布偶猫5 小时前
Java-----韩顺平单例设计模式学习笔记
java·笔记·设计模式
WISHMELUCK1'5 小时前
设计模式的六大设计原则
设计模式·接口隔离原则·依赖倒置原则·里氏替换原则·迪米特法则·合成复用原则·单一职责原则
Hellyc13 小时前
基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理
java·数据库·设计模式·rocketmq
追烽少年x13 小时前
设计模式---观察者模式(发布-订阅模式)
网络·设计模式