学习目标:
》原型模式的应用场景
》原型模式之深克隆与浅克隆
》了解克隆是如何破坏单例的
》原型模式的优缺点
》掌握建造者模式和工厂模式的区别
知识前提:
》了解并掌握工厂模式
》已掌握单例模式
》听说过模式,但想要深入学习
Prototype Pattern,是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
调用者不需要知道任何创建细节,不调用构造函数。
属于创建型模式。
原型模式其实在开发中很常见。比如:我们对一个对象设值时,通常的做法:
先new 一个实例,然后调用set方法,传参另一个对象【原型】,调用get方法进行设值,如下所示代码:
package com.wf.prototype; import lombok.Data; /** * @ClassName ExamPaper * @Description 考试试卷 * @Author wf * @Date 2020/5/7 12:49 * @Version 1.0 */ @Data public class ExamPaper { private Long id; private String name; public ExamPaper copy (){ ExamPaper examPaper = new ExamPaper(); examPaper.setId(this.getId()); examPaper.setName(this.getName()); //.... return examPaper; } }
注意:
这里使用lombok组件,依赖如下:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency>
这里copy方法,就用到的原型模式。【原来的对象,生成另一个对象】
但是,它有一些问题:
》代码使用大量get,set转换。重复度很高。
》代码不够优雅。
》其实是一种硬编码形式,当增加一个字段时,就必须得修改copy方法。
为了改善上面的问题,基于反射,提取bean转换工具类:
原型模式的应用场景
》原型模式之深克隆与浅克隆
》了解克隆是如何破坏单例的
》原型模式的优缺点
》掌握建造者模式和工厂模式的区别
原文:https://www.cnblogs.com/wfdespace/p/12842410.html