1208创建型模式(原型与建造者模式)

本文介绍了原型模式和建造者模式的基本概念、应用场景、优缺点及其在Java中的实现方式。原型模式通过拷贝原型对象来创建新对象,适用于对象创建过程复杂的情况;建造者模式将对象构建过程与表示分离,适合创建复杂对象且步骤不固定的场景。
摘要由CSDN通过智能技术生成

原型模式

原型模式(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

调用者不需要知道任何创建细节,不调用构造函数。

属于创建型模式

适用场景

1.类初始化消耗资源较多
2.new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)
3.构造函数比较复杂
4.循环体中生产大量对象时

浅克隆

实现Cloneable接口,只是拷贝对象的引用地址
conle方法只复制属性的引用地址,
针对引用型数据会导致克隆前后的对象,共用同一个数据地址,却无法克隆地址指向的内部基本数据

深克隆

拷贝对象的值
1.通过输入输出流进行对象复制
2.利用Json,将对象转为Json字符串,再转为克隆对象
ArrayList与HashMap都实现了深克隆

原型模式优缺点

优点:
性能优良,Java自带的原型模式,
是基于内存二进制流的拷贝
可以使用深克隆方式保存对象的状态
原型模式可以将对象复制并将其状态保存,简化了创建过程
缺点:
必须配备克隆方法
违反开闭原则,对类进行改造时,需要修改克隆代码
需要注意深拷贝与浅拷贝的场景应用


建造者模式

建造者模式(Builder Pattern)是将一个复制对象的构建与它的表示分离,使得同意的构建过程可以创建不同的表示
特征:用户只需要指定需要建造的类型就可以获得对象,建造过程及细节不需要了解 属于创建型模式

适用场景

适用于创建对象需要很多步骤,但是步骤的顺序不一定固定
如果一个对象有非常复杂的内部结果(很多属性)
把复杂对象的创建和使用分离
例如,sql语句的拼接

源码体现

StringBuilder、CacheBulider、SqlSessionFactoryBuilder、BeanDefinitionBuilder

建造者模式的优缺点

优点: 封装性好,创建和使用分离 扩展性好,建造类之间独立、一定程度上解耦
缺点: 产生多余的Builder对象
产品内部发生变化,建造者都要修改,维护成本较大

建造者模式与工厂模式的区别

1.建造者模式更加注重方法的调用顺序,工厂模式注重于创建不同的对象。
2.创建对象的力度不同,建造者模式创建复杂的单一对象,由复杂的部件组成, 工厂模式创建出来的对象不同但内容一样
3.关注点不同,工厂模式只需创建对象,而建造者模式不仅要创建对象,还需要组装该对象
4.建造者模式根据不同的建造过程,最终的对象组成也会不同,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值