目录
一、原型模式的定义与类型
- 一、原型模式的定义与类型
- 二、原型模式的适用场景
- 三、原型模式的优点
- 四、原型模式的缺点
- 五、原型模式简单示例
- 六、浅拷贝简单示例
- 七、深拷贝简单示例
1. 定义
- 指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
- 不需要知道任何创建的细节,不调用构造函数
3. 类型
- 创建型
- 类初始化消耗较多资源
- new产生的一个对象需要非常频繁的过程(数据准备、访问权限等)
- 构造函数比较复杂
- 循环体中产生大量对象时
- 原型模式性能比直接new一个对象性能高
- 简化创建过程
- 必须配备克隆方法
- 对克隆复杂对象或对克隆出的对象进行复杂改造时,容易引入风险
- 深拷贝、浅拷贝要运用得当
1、定义Mail类实现Cloneable接口,并重写clone方法。
package com.rf.designPatterns.prototype;
/**
* @description: 将目标类Mail实现Cloneable接口,并重写clone方法
* @author: xiaozhi
* @create: 2020-06-08 09:31
*/
public class Mail implements Cloneable{
private String name;
private String emailAddress;
private String Context;
//构造方法
public Mail(){
System.out.println("调用了 Mail Class的构造方法。");
}
//setter、getter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public String getContext() {
return Context;
}
public void setContext(String context) {
Context = context;
}
//重写toString方法
@Override
public String toString() {
return "Mail{" +
"name='" + name + '\'' +
", emailAddress='" + emailAddress + '\'' +
", Context='" + Context + '\'' +
'}'+super.toString();
}
//重写clone方法
@Override
protected Object clone() throws CloneNotSupportedException {
System.out.println(" clone mail object");
return super.clone();
}
}
2、定义一个测试类
package com.rf.designPatterns.prototype;
/**
* @description:
* @author: xiaozhi
* @create: 2020-06-08 09:44
*/
public class MailTest {
public static void main(String[] args) throws CloneNotSupportedException {
//new一个实例,并给context属性赋值
Mail mail=new Mail();
mail.setContext("初始化模板");
System.out.println("初始化的mail=====:"+mail);
for(int i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?