样例代码
涉及到的项目样例代码均可以从https://github.com/WeiXiao-Hyy/Design-Patterns.git获取
需求
- 个人或公司需要开发票时,会有个人发票和企业发票的区别 -> 建造者模式;
- 不同业务部门可能都需要使用发票数据,需要拷贝同一份发票 -> 原型模式;
- 构造出来的发票建造者方式,需要进行方法增强(例如:银行卡号校验,信息是否合格等等)-> 代理模式;
建造者模式
将不同的组件进行组装,最终生成一个最终的对象。与工厂模式的区别:
- 工厂模式和建造者模式都是为了建造对象;
- 工厂模式重在结果,只要能够建造对象即可;建造者模式重在构件过程,需要关心如何将不同的信息组装成一个完整的对象;
原型模式
在Java语言中,比较简单,常用的两个方法如下:
- 实现Cloneable接口重写clone方法即可
- 实现Serializable序列化
需要区分一下引用拷贝,浅拷贝,深拷贝的区别。
代理模式
一般来对现有方法的增强。
上述是静态代理的UML图,在实战中也需要注意掌握JDK和CGLIB动态代理的原理和适用场景。