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

样例代码

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

需求

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

建造者模式

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

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

原型模式

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

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

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

代理模式

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

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

相关推荐
geovindu18 小时前
rust: Mediator Pattern
开发语言·后端·设计模式·rust·中介者模式·行为模式
SENKS_DIGITAL21 小时前
金属加工遇上数字化:通快展厅里的工业蜕变-森克思科技
科技·设计模式·展厅设计·展馆设计·科技展厅设计·展览设计·企业展厅设计
flower98032321 小时前
C++消息总线软件开发框架AI重构版
c++·设计模式·架构
zzu123zsw2 天前
业务拆分后的治理深水区:解构企业级微服务六大核心设计模式与高可用落真实践
微服务·设计模式·架构·高可用·微服务架构设计
牧瀬クリスだ2 天前
观察者模式:一个对象变化,一群对象自动响应
java·观察者模式·设计模式
拆房老料2 天前
【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining
java·前端·人工智能·设计模式·prompt
MobotStone3 天前
AI 写代码越来越爽,但程序员可能越来越废了
人工智能·设计模式
墨子夕3 天前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(前言篇)
java·开发语言·设计模式
墨子夕3 天前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(第一篇)
java·python·设计模式
General_G3 天前
创建型模式—原型(Prototype)模式
c++·设计模式·原型模式