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

在线代理浏览器网站制作小游戏的软件

在线代理浏览器网站,制作小游戏的软件,纪检监察信息网站建设,小程序diy制作平台1、定义 原型模式是一种创建型模式#xff0c;用于创建重复的对象#xff0c;并且保证性能。原型模式创建的对象是由原型对象自身创建的#xff0c;是原型对象的一个克隆#xff0c;和原型对象具有相同的结构和相同的值。 2、适用场景 创建对象时我们不仅仅需要创建一个新…1、定义 原型模式是一种创建型模式用于创建重复的对象并且保证性能。原型模式创建的对象是由原型对象自身创建的是原型对象的一个克隆和原型对象具有相同的结构和相同的值。 2、适用场景 创建对象时我们不仅仅需要创建一个新的对象可能我们还需要对象创建出来里面的值和某一个对象也要完全一致原型模式可以保证结构和值都相同。创建对象时我们希望对创建出来的对象的修改不影响到原来的对象可能通过原型模式进行创建进行深度克隆。创建对象时如果对象是个复杂对象里面又包含了其他的复杂对象我们希望创建的对象和原有对象保持一致传统模式new会非常麻烦还需要考虑到里面其他的复杂对象这时候可以使用原型模式进行创建。 3、 原型模式的核心是就是原型类 PrototypePrototype 类需要具备以下两个条件 1实现 Cloneable 接口在 Java 中 Cloneable 接口的作用就是在运行时通知虚拟机可以安全地在实现了 Cloneable 接口的类上使用 clone() 方法只有在实现了 Cloneable 的类才可以被拷贝否则在运行时会抛出 CloneNotSupportedException 异常。2重写 Object 类中的 clone() 方法Java 中所有类的父类都是 ObjectObject 中有一个clone() 方法用于返回对象的拷贝但是其作用域 protected一般的类无法调用因此Prototype 类需要将 clone() 方法的作用域修改为 public。 ​ 原型模式是一种比较简单的模式也非常容易理解实现一个接口重写一个方法即完成了原型模式。在实际应用中原型模式很少单独出现。经常与其他模式混用他的原型类Prototype也常用抽象类来替代。 4、注意事项 1使用原型模式复制对象不会调用类的构造函数对象是通过调用 Object 类的 clone() 方法来完成的它直接在内存中复制数据。不但构造函数不会执行甚至连访问权限都对原型模式无效。单例模式中需要将构造函数的访问权限设置为 private但是 clone() 方法直接无视构造方法的权限所以单例模式与原型模式是冲突的在使用时需要注意。 2深拷贝与浅拷贝。Object 类的 clone() 方法只会拷贝对象中的基本的数据类型8种基本数据类型 byte,char,short,int,long,float,double,boolean 和对应的封装类对于数组、容器对象、引用对象等都不会拷贝这就是浅拷贝。如果要实现深拷贝必须将原型模式中的数组、容器对象、引用对象等另行拷贝。 浅拷贝只克隆对象中的基本数据类型而不会克隆数组、容器、引用对象等。换言之浅复制仅仅复制所考虑的对象而不复制它所引用的对象。如果变量为String字符串则拷贝其引用地址但是在修改的时候它会从字符串池中重新生成一个新的字符串原有的字符串对象保持不变。深拷贝把要克隆的对象所引用的对象都克隆了一遍。 代码实例 /*** Author charles.yao* Description* Date 2023/2/13 14:54*/ NoArgsConstructor AllArgsConstructor Data public class Animal implements Cloneable {private String userName;private String userAge;Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();} }/*** Author charles.yao* Description 浅拷贝类* Date 2023/2/13 14:53*/ NoArgsConstructor AllArgsConstructor Data public class UserInfo implements Cloneable {private String userName;private String userAge;private Animal animal;Overrideprotected UserInfo clone() throws CloneNotSupportedException {UserInfo userInfo (UserInfo) super.clone();userInfo.setAnimal((Animal) animal.clone());return userInfo;} }/*** Author charles.yao* Description 浅拷贝测试* Date 2023/2/13 14:57*/ public class DeepCopyTest {public static void main(String[] args) {try {UserInfo userInfo new UserInfo();userInfo.setUserName(张三);userInfo.setUserAge(1223);userInfo.setAnimal(new Animal(111, 2122));UserInfo clone userInfo.clone();System.out.println(原数据 userInfo.toString());System.out.println(拷贝之后 clone.toString());System.out.println(userInfo clone);System.out.println(userInfo.getAnimal() clone.getAnimal());userInfo.getAnimal().setUserName(二狗);System.out.println(原数据动物 userInfo.getAnimal().toString());System.out.println(拷贝之后动物 clone.getAnimal().toString());} catch (CloneNotSupportedException e) {e.printStackTrace();}} }运行结果 原数据UserInfo(userName张三, userAge1223, animalAnimal(userName111, userAge2122)) 拷贝之后UserInfo(userName张三, userAge1223, animalAnimal(userName111, userAge2122)) false false 原数据动物Animal(userName二狗, userAge2122) 拷贝之后动物Animal(userName111, userAge2122)
http://www.w-s-a.com/news/737327/

相关文章:

  • google网站入口电商运营十大基础知识
  • 建设公司网站的细节中国建设网网站
  • 重庆美邦建网站宝安网页设计
  • 建网站的地址十堰做网站
  • 怎么评判一个网站做的好与坏专做情侣装网站
  • 网站管理助手v3历史上的今天 网站如何做
  • 网站建设与管理的就业方向网站开发前端模板
  • 对网站建设的维护深圳网络推广推荐
  • wordpress多站共享授权码wordpress数据库缓存插件
  • 建一个购物网站多少钱上海商标注册
  • 琪觅公司网站开发面点培训学校哪里有
  • 北京建设工程信息网站江苏企业网站建设
  • php电子商务网站建设wordpress新建的页面如何加xml
  • 去百度建网站外贸业务推广
  • 百度seo 站长工具网络营销课程个人总结3000字
  • 设计品牌网站wordpress商城 中文站
  • 公司网站要备案吗百度售后电话人工服务
  • 北京移动网站建设制作一个购物网站
  • 网站优化排名如何做网络开发工程师
  • 域名已有服务器也有怎么做网站pc 手机网站 微站
  • 鞍山网站设计制作网站最好的外贸网站建设
  • 百度手机模板网站新变更营业执照注册号查了发现之前有备案过网站了
  • 群晖个人网站建设建设网站主机免费版
  • 下载好了网站模板怎么开始做网站阿克苏网站建设价格
  • 有谁做彩票网站学会了vue 能搭建一个网站平台
  • 描述对于营销型网站建设很重要飘红效果更佳教育培训排行榜前十名
  • 国外网站有哪些推荐的网站按关键词显示广告图片
  • 互联网招聘网站排名手机网站系统
  • 网站与云平台区别企业网站建设有什么要求
  • wordpress福利网站源码高端网站设计培训机构