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

建设网站技术方案在线资源链接

建设网站技术方案,在线资源链接,一个专门做ppt的网站吗,网站建设的公司业务目录 定义 类图 角色 优缺点 优点 缺点 应用场景 案例展示 浅克隆 深克隆 定义 原型模式旨在创建重复的对象,同时确保良好的性能表现。它通过复制现有对象(原型)来创建新对象,而非使用传统的构造函数创建方式。这种设计…

目录

定义

类图

角色

优缺点

优点

缺点

应用场景

案例展示

浅克隆

深克隆


定义

        原型模式旨在创建重复的对象,同时确保良好的性能表现。它通过复制现有对象(原型)来创建新对象,而非使用传统的构造函数创建方式。这种设计模式属于创建型模式,为对象创建提供了一条便捷、高效的途径。其核心在于,通过复制原型对象的属性和状态,极大地减少了新对象创建过程中的资源消耗和时间成本。

类图

角色

  1. 原型(Prototype):声明一个克隆自身的接口,这是所有支持克隆操作的类的通用接口。它为具体原型类定义了克隆方法的规范,使得具体原型类只需实现该接口,就能实现对象的克隆。​

  2. 具体原型(Concrete Prototype):实现原型接口,定义克隆方法。在克隆方法中,具体原型类会创建一个与自身属性和状态相同的新对象,并返回该对象。

优缺点

优点

  • 性能优势:Java 自带的原型模式基于内存二进制流的复制,相比直接使用new关键字创建对象,能显著提升性能。在创建复杂对象时,new操作需要经历类的加载、初始化等一系列过程,而原型模式通过复制内存中的对象,避免了这些繁琐的步骤,大幅缩短了对象创建的时间。​

  • 状态保存与恢复:借助深克隆,原型模式可以完整地保存对象的状态。这一特性在实现撤销操作或恢复对象历史状态时极为有用。通过克隆并保存对象的特定状态,程序能够在需要时轻松恢复到之前的状态,简化了状态管理的复杂度。

缺点

  • 违背开闭原则:由于clone方法位于类的内部,对已有类进行改造以支持原型模式时,需要修改类的代码。这与开闭原则相悖,可能导致代码的可维护性降低,尤其是在大型项目中,牵一发而动全身,增加了系统的维护成本。​

  • 深克隆实现复杂:在实现深克隆时,需要编写复杂的代码。当对象之间存在多重嵌套引用时,为了确保所有层次的对象都能被正确克隆,每个层次的对象对应的类都必须支持深克隆,这无疑增加了实现的难度和复杂性。

应用场景

  • 对象相似性高:当系统中需要创建多个相似对象,仅个别属性不同时,原型模式是理想的选择。以游戏开发为例,游戏中的角色通常具有相似的基本属性和行为,使用原型模式可以通过克隆一个基础角色,然后修改特定属性,快速创建多个不同的角色实例。​

  • 创建成本高昂:在创建对象成本较大的情况下,如初始化时间长、占用大量 CPU 资源或网络资源,原型模式可以优化资源使用。比如,创建一个需要从数据库加载大量数据并进行复杂计算的对象,通过克隆已有的对象,可以避免重复的加载和计算过程,提高系统的响应速度。​

  • 数据准备繁琐:当创建对象需要繁琐的数据准备或特定的访问权限时,原型模式可以简化对象的创建过程,提高性能和安全性。例如,创建一个需要经过多层权限验证和复杂数据配置的对象,通过克隆已有的合法对象,可以减少不必要的验证和配置步骤。​

  • 大量对象需重新赋值:在系统中大量使用某类对象,且每个调用者都需要为其属性重新赋值的场景下,原型模式可以通过克隆对象,快速满足不同调用者的需求,减少重复创建对象的开销。

案例展示

浅克隆

  • 浅克隆是使用默认的 clone()方法来实现

  • 基本数据类型的成员变量,浅克隆会直接进行值传递(复制属性值给新对象)

  • 引用数据类型的成员变量,浅克隆会进行引用传递(复制引用值(内存地址)给新对象)

  • 在原先Sheep 类基础上实现 Cloneable 接口,重写 clone 方法。


public class Sheep implements Cloneable{private String name;private int age;@Overrideprotected Object clone()  {//克隆该实例,使用默认的clone方法来完成Sheep sheep = null;try {sheep = (Sheep)super.clone();} catch (Exception e) {System.out.println(e.getMessage());}return sheep;}public Sheep(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Sheep{" +"name='" + name + '\'' +", age=" + age +'}';}
}

深克隆

  • 方法1:

    • 引用对象也实现 Cloneable 接口

    • 对象调用引用对象的clone 方法

  • 方法2:

    • 实现序列化接口,不必实现Cloneable 接口了


public class Sheep implements Serializable { //实现序列化接口private String name;private int age;public Cow friend;public Sheep(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Sheep{" +"name='" + name + '\'' +", age=" + age +'}';}public Object deepClone() { //深拷贝//创建流对象ByteArrayOutputStream bos = null;ObjectOutputStream oos = null;ByteArrayInputStream bis = null;ObjectInputStream ois = null;try {//序列化bos = new ByteArrayOutputStream();oos = new ObjectOutputStream(bos);oos.writeObject(this); //当前这个对象以对象流的方式输出//反序列化bis = new ByteArrayInputStream(bos.toByteArray());ois = new ObjectInputStream(bis);Sheep sheep = (Sheep) ois.readObject();return sheep;} catch (Exception e) {e.printStackTrace();return null;} finally {//关闭流try {bos.close();oos.close();bis.close();ois.close();} catch (Exception e2) {System.out.println(e2.getMessage());}}}
}

http://www.dtcms.com/wzjs/430479.html

相关文章:

  • 江苏华悦建设集团网站网络营销有几种方式
  • 设计素材网站推荐2023sem竞价专员是干什么的
  • 北海哪里做网站seo的定义
  • 张家港营销型网站建设盐城网站优化
  • 网站是香港主机深圳网站开发
  • 网站内容优化方案营销软文模板
  • 公司网站自己可以做吗推广类软文案例
  • 给客户做网站 赚钱吗查关键词排名软件
  • 给朋友做的相册网站没有了百度如何快速收录
  • 网站排名优化网站推广名词解释
  • 搜狐快站怎么做网站百度搜索排名优化哪家好
  • 做网站的叫什么思耐企业培训课程推荐
  • 做贱奴网站网络推广方案有哪些
  • 免费推广网站2024企业做推广有用吗
  • 电子产品网站模板广点通和腾讯朋友圈广告区别
  • 网站优化的目的软文生成器
  • 规范网站建设现在做网络推广都有什么方式
  • 动力做网站苏州seo排名优化课程
  • 襄阳企业网站建设短链接在线生成
  • 网站统计 独立访客seo有名气的优化公司
  • 常州溧阳网站建设抖音指数查询
  • 网站创建过程宁德市有几个区几个县
  • 厦门公司做网站莫停之科技windows优化大师
  • php网站开发技术背景seo简单优化
  • 乌市做网站的公司seo计费怎么刷关键词的
  • 投诉网站怎么做湖南网站建设seo
  • 做网站不给钱营销网络的建设怎么写
  • 网站页脚包括什么在线建站平台免费建网站
  • 满洲里网站制作友情链接是什么意思
  • 白城学做网站免费站推广网站在线