当前位置: 首页 > wzjs >正文

成都市专业制作网站新航道培训机构怎么样

成都市专业制作网站,新航道培训机构怎么样,企业公共信息服务平台,jquery做背景的网站赏析【JAVA面试题】设计模式之原型模式 一、原型模式核心概念 原型模式(Prototype Pattern) 是一种创建型设计模式,通过复制现有对象(原型)来创建新对象,避免反复初始化带来的性能损耗。适用于需要高频创建相…

【JAVA面试题】设计模式之原型模式

一、原型模式核心概念

原型模式(Prototype Pattern) 是一种创建型设计模式,通过复制现有对象(原型)来创建新对象,避免反复初始化带来的性能损耗。适用于需要高频创建相似对象的场景。


二、原型模式实战案例:敌机生成优化

1. 原始方案性能缺陷

public class Client {public static void main(String[] args) {List<EnemyPlane> enemyPlanes = new ArrayList<>();for (int i = 0; i < 50; i++) {// 每次new对象导致性能损耗EnemyPlane ep = new EnemyPlane(new Random().nextInt(200));enemyPlanes.add(ep);}}
}

问题:循环内频繁实例化对象,触发类加载、初始化等流程,性能低下。


2. 原型模式优化实现

2.1 实现Cloneable接口
public class EnemyPlane implements Cloneable {private int x;private int y = 0;public EnemyPlane(int x) { this.x = x; }// 开放坐标修改(克隆后调整状态)public void setX(int x) { this.x = x; }@Overridepublic EnemyPlane clone() throws CloneNotSupportedException {return (EnemyPlane) super.clone(); // JVM内存拷贝,效率极高}
}
2.2 原型工厂封装
public class EnemyPlaneFactory {private static EnemyPlane protoType = new EnemyPlane(200); // 原型实例public static EnemyPlane getInstance(int x) throws CloneNotSupportedException {EnemyPlane clone = protoType.clone();clone.setX(x); // 调整克隆体坐标return clone;}
}

优势:克隆仅需0 - 1 ms,相比new操作(10~50ms)性能提升10倍以上。


三、深浅拷贝核心问题与解决方案

  • 浅拷贝:只复制对象的值类型字段和引用类型字段的地址,导致多个对象共享同一个引用对象。

  • 深拷贝:不仅复制对象的值类型字段,还会递归复制引用类型字段的实际对象,确保每个对象都有独立的引用对象。

1. 浅拷贝陷阱

当对象包含引用类型字段时:

public class EnemyPlane implements Cloneable {private Bullet bullet = new Bullet(); // 引用类型// ...@Overridepublic EnemyPlane clone() {return (EnemyPlane) super.clone(); // 浅拷贝:bullet地址被复制}
}

问题:克隆后的敌机会共享同一颗子弹对象,修改任意克隆体的子弹属性会影响所有实例。


2. 深拷贝实现

public class EnemyPlane implements Cloneable {private Bullet bullet;@Overridepublic EnemyPlane clone() throws CloneNotSupportedException {EnemyPlane clone = (EnemyPlane) super.clone(); // 浅拷贝:复制值类型字段和引用地址clone.bullet = this.bullet.clone(); // 深拷贝:递归克隆引用对象return clone;}
}// Bullet也需实现Cloneable
public class Bullet implements Cloneable {@Overridepublic Bullet clone() throws CloneNotSupportedException {return (Bullet) super.clone();}
}

关键点

  • 所有嵌套对象都需实现Cloneable
  • 递归调用clone方法形成克隆链

四、原型模式应用场景

场景说明
对象创建成本高如需要复杂初始化的网络连接对象
高频创建相似对象游戏中的子弹/敌机生成、文档模板克隆
需要隔离对象创建细节不希望调用方依赖具体类构造函数

五、面试要点总结

  1. 原型模式核心价值

    • 避免重复初始化,提升对象创建性能
    • 简化复杂对象创建流程
  2. 深浅拷贝区别

    • 浅拷贝:复制值类型+引用地址(共享引用对象)
    • 深拷贝:完全复制值类型和引用对象(递归克隆)
  3. 实现深拷贝的三种方式

    • 递归实现Cloneable(如本文示例)
    • 序列化/反序列化(实现Serializable)
    • 使用第三方库(Apache Commons Lang3)
  4. JDK中的原型应用

    • ArrayList.clone()
    • Arrays.copyOf()
  5. 注意事项

    • 深拷贝可能引发循环引用问题
    • 需要处理final字段的特殊情况
    • 考虑使用原型管理器管理多种原型
http://www.dtcms.com/wzjs/243822.html

相关文章:

  • 怎样做网站兼职关键词英文
  • 南京手机网站制作微信平台推广方法
  • 兰州网站外包厦门谷歌推广
  • php网站开发常用的插件seo怎么做?
  • 遵义公司网站制作哪家好百度最新秒收录方法2023
  • dreamweaver怎么做网站百度推广登陆平台登录
  • 李沧做网站web免费网站
  • 同样也是做严选的网站武汉网站快速排名提升
  • 已经有网站域名如何做网页怎么找需要推广的商家
  • blogengine wordpress兰州seo整站优化服务商
  • 陕西做天然气公司网站seo去哪里学
  • 设计师用什么软件搜索引擎优化方法有哪几种
  • 2013电子商务网站建设考试试卷百度推广平台
  • 建设网站网址是多少北大青鸟软件开发培训学费多少
  • 西安b2c网站建设域名注册网站查询
  • 网站升级中百度贴吧官网入口
  • 全国企业公示网查询官网网站为什么要seo?
  • 上海网站seo设计郑州网站顾问热狗网
  • 洞口做网站找谁企业专业搜索引擎优化
  • 专业律所网站建设关键词工具有哪些
  • 2023年免费b站推广大全培训班学员培训心得
  • 微信如何做网站个人网站seo入门
  • 佛山专业的做网站seo优化标题
  • 杭州设计公司税务筹划seo研究协会网是干什么的
  • 东莞电商网站建设官网seo哪家公司好
  • 一级a做爰片图片免费观看网站服务营销策划方案
  • 广州建站优化广告推广方案怎么写
  • 广州网站制作开发公司哪家好公司网站的推广方案
  • 哪个网站系统做的好软件外包公司有哪些
  • 网站建设 总结怎么做百度搜索排名