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

样例代码

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

需求

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

建造者模式

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

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

原型模式

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

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

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

代理模式

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

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

相关推荐
Larcher2 天前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
咖啡八杯3 天前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
:mnong3 天前
学习创建结构行为设计模式
设计模式
w_t_y_y3 天前
Agent设计模式(四)多模态融合模式(Multi-Modal Fusion)
设计模式
zhouhui0013 天前
订单状态的 if-else 地狱上线就崩——状态模式的工业级落地
设计模式
geovindu3 天前
go: Reactor Pattern
开发语言·后端·设计模式·golang·反应器模式
一只旭宝4 天前
【C++入门精讲22】常见设计模式
c++·设计模式
许彰午4 天前
38_Java设计模式之装饰器模式
java·设计模式·装饰器模式
geovindu4 天前
python: Reactor Pattern
开发语言·python·设计模式·反应器模式