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

酒店网站建设的需求分析报告盐城市建设银行网站

酒店网站建设的需求分析报告,盐城市建设银行网站,网站开发网页制作薪资,宁波网站制作公司排名介绍 原型模式 在Java中,原型模式是一种创建型设计模式,它允许通过复制一个现有对象来创建一个新对象,而不是通过创建新的对象来初始化一个对象,原型模式是一种基于克隆的设计模式,通过复制现有对象的数据来创建新的对象. 原型模式需要实现Cloneable接口并重写Object类中的c…介绍 原型模式 在Java中,原型模式是一种创建型设计模式,它允许通过复制一个现有对象来创建一个新对象,而不是通过创建新的对象来初始化一个对象,原型模式是一种基于克隆的设计模式,通过复制现有对象的数据来创建新的对象. 原型模式需要实现Cloneable接口并重写Object类中的clone()方法,在重谢clone()方法时,需要调用super.clone()方法来创建一个新的对象,并复制原始对象中的所有属性.默认情况下,Java中的Object类提供的clone()方法会执行浅拷贝,如果原始对象中包含引用类型的成员变量,则需要进行深拷贝操作,以确保新对象中所有成员变量都是独立的. 深拷贝与浅拷贝 浅拷贝(Shallow Copy)会创建一个新的对象,该对象具有与原始对象相同的属性值.但是,如果原始对象包含对其他对象的引用,则新对象也将包含对相同对象的引用.换句话说,新对象仅仅是原始对象的一个副本,而不是独立的对象. 深拷贝(Deep Copy)则是创建一个新的对象,该对象具有与原始对象相同的属性值,但是它会递归的复制对象图中所有的对象,而不是只复制引用.换句话说,深拷贝会创建一个完全独立的新对象,该对象与原始对象没有任何关联. 区别: 对于基本数据类型,浅拷贝和深拷贝没有区别,因为基本数据类型在内存中储存为值.但是对于引用类型,浅拷贝和深拷贝会有不同的行为.浅拷贝只复制对象本身以及其中的基本数据类型成员,而不会复制引用类型成员.因此,如果原始对象中包含引用类型成员,浅拷贝得到的对象中的引用类型成员与原始对象中的相同,即两者指向同一块内存地址.而深拷贝则会递归的复制所有的引用类型成员,因此得到的对象中的引用类型成员与原始对象中的不同,即两者指向不同的内存地址.浅拷贝速度相对较快,因为它只复制了对象本身以及其中的基本数据类型成员.而深拷贝速度相对较慢,因为它需要递归的复制所有引用类型成员. 应用场景: 浅拷贝通常用于快速创建对象副本,且原始对象中不包含引用类型成员的情况下,可以使用浅拷贝.比如,当需要多个对象共享某些状态时,可以使用浅拷贝来快速创建副本深拷贝通常用于创建完全独立的对象,且原始对象中包含引用类型成员的情况下,可以使用深拷贝 浅拷贝示例代码 Data public class Person implements Cloneable{private String name;private int age;private Address address;public Person(String name, int age, Address address) {this.name name;this.age age;this.address address;}Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();} }Data public class Address {private String city;private String street;public Address(String city, String street) {this.city city;this.street street;} }测试浅拷贝 package com.fanqiechaodan.prototype.copy.shollow;import com.alibaba.fastjson.JSON;/*** author fanqiechaodan* Classname Demo* Description 浅拷贝* Date 2023/3/10 18:59*/ public class Demo {public static void main(String[] args) throws CloneNotSupportedException {Person person1 new Person(张三, 18, new Address(上海, 南京路));Person person2 (Person) person1.clone();System.out.println(JSON.toJSONString(person1));System.out.println(JSON.toJSONString(person2));System.out.println(浅拷贝后:);person1.getAddress().setCity(南京);System.out.println(JSON.toJSONString(person1));System.out.println(JSON.toJSONString(person2));} }深拷贝示例代码 Data public class Person implements Serializable {private String name;private int age;private Address address;public Person(String name, int age, Address address) {this.name name;this.age age;this.address address;}Overrideprotected Object clone() {try {ByteArrayOutputStream bos new ByteArrayOutputStream();ObjectOutputStream oos new ObjectOutputStream(bos);oos.writeObject(this);ByteArrayInputStream bis new ByteArrayInputStream(bos.toByteArray());ObjectInputStream ois new ObjectInputStream(bis);return ois.readObject();} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}return null;} }Data public class Address implements Serializable {private String city;private String street;public Address(String city, String street) {this.city city;this.street street;} }测试深拷贝 package com.fanqiechaodan.prototype.copy.deep;import com.alibaba.fastjson.JSON; import org.springframework.util.SerializationUtils;import java.io.IOException;/*** author fanqiechaodan* Classname Demo* Description 深拷贝* Date 2023/3/10 19:15*/ public class Demo {public static void main(String[] args) throws IOException, ClassNotFoundException {Person person1 new Person(张三, 18, new Address(上海, 南京路));// 重写clone完成深拷贝Person person2 (Person) person1.clone();// 使用工具类完成深拷贝Person person3 (Person) SerializationUtils.deserialize(SerializationUtils.serialize(person1));System.out.println(JSON.toJSONString(person1));System.out.println(JSON.toJSONString(person2));System.out.println(JSON.toJSONString(person3));System.out.println(深拷贝后:);person1.getAddress().setCity(南京);System.out.println(JSON.toJSONString(person1));System.out.println(JSON.toJSONString(person2));System.out.println(JSON.toJSONString(person3));} }原型模式代码 原型类代码 Data public class Person implements Cloneable{private String name;private int age;private Address address;public Person(String name, int age, Address address) {this.name name;this.age age;this.address address;}Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();} }Data public class Address {private String city;private String street;public Address(String city, String street) {this.city city;this.street street;} }测试 package com.fanqiechaodan.prototype;import com.alibaba.fastjson.JSON;/*** author fanqiechaodan* Classname Demo* Description* Date 2023/3/10 19:23*/ public class Demo {public static void main(String[] args) throws CloneNotSupportedException {Person person1 new Person(张三, 18, new Address(北京, 青年路));Person person2 (Person) person1.clone();System.out.println(JSON.toJSONString(person1));System.out.println(JSON.toJSONString(person2));} }需要注意的是,在使用Cloneable接口实现原型模式时,需要注意以下几点: 要使用克隆方法,必须确保该对象实现了Cloneable接口.否则,在调用clone方法时会抛出CloneNotSupportedException异常调用clone方法返回的是一个浅拷贝对象,如果对象包含了引用类型的成员变量,那么这些成员变量依然会被多个对象共享.在实现clone方法时,需要注意对成员变量的处理,特别是对引用类型的成员变量的处理.如果需要实现深拷贝,可以通过重写clone方法来实现. 总结 优点: 减少了重复代码的编写,避免了创建大量相似对象的开销,提高了系统的性能.可以动态的创建对象,而不是静态地在代码中定义,更加灵活.简化了对象的创建过程,减少了不必要的参数传递. 缺点: 由于原型模式会复制对象,可能导致对象状态的改变,因此需要谨慎处理.由于原型模式使用了克隆的方式创建对象,可能导致类的层次结构比较复杂. 应用场景: 当需要创建大量相似的对象时,使用原型模式可以大大减少对象创建的开销.当对象的创建过程比较复杂,或者对象的状态会随着时间的推移而发生改变时,可以考虑使用原型模式.当需要动态地创建对象时,可以使用原型模式.例如:在运行时动态创建新对象或者在数据库中读取对象并创建新对象.
http://www.dnsts.com.cn/news/187751.html

相关文章:

  • 做任务有奖励的网站wordpress蜘蛛
  • 做旅游网站公司企业网站建设预算
  • 网站建设导航栏变化简单网页制作模板
  • 太原建站公司模板wordpress 推荐位调用
  • 人才网网站建设基本流程现货投资网站建设
  • 深圳高端网站建设招聘360网站收录提交
  • 有哪些网站可以做设计竞标西安专业网站开发哪家好
  • 在网上做黑彩网站会怎样国外开源 企业网站
  • 最新获取网站访客qq接口科技企业网站
  • 怎么知道网站的域名东莞桂城网站制作
  • 在线响应式网站wordpress 3.2 下载
  • 中牟高端网站建设怎么用源代码做网站
  • 网站营销概念销售网站开发
  • 网站建站公司服务好吗d代码做网站
  • 境外网站 icp备案找公司网站建设
  • 做阀门网站电话号码南京凯盛建设集团有限公司网站
  • 网站开发和编程有什么区别上海已经开始二次感染了
  • 在那个网站做定制旅游赣州晒房网门户网站
  • 上海做网站比较好的公司昆明微网站制作
  • 蒙自网站建设wordpress title标题
  • 网站copyright写法设计师35岁后的出路
  • 怎么免费发布网站安徽建设工程造价信息网站
  • 临沂专门做网站的微信做模板下载网站有哪些内容
  • phpcms调用网站名称怎么做相亲网站
  • 微信公众号影视网站怎么做青岛百度关键词优化
  • 免费网站平台推荐如何更改asp网站自定义产品顺序
  • 成都建站价格seo点击排名工具
  • 百度 医疗网站建设wordpress播入视频播放
  • 柬埔寨网站建设作文素材网
  • php网站本地调试安徽池州做企业网站