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

上海网站建设 浦东免费做网站的网站

上海网站建设 浦东,免费做网站的网站,移动网站设计,网站 外包合同1、定义 原型模式是一种创建型模式,用于创建重复的对象,并且保证性能。原型模式创建的对象是由原型对象自身创建的,是原型对象的一个克隆,和原型对象具有相同的结构和相同的值。 2、适用场景 创建对象时我们不仅仅需要创建一个新…

1、定义
原型模式是一种创建型模式,用于创建重复的对象,并且保证性能。原型模式创建的对象是由原型对象自身创建的,是原型对象的一个克隆,和原型对象具有相同的结构和相同的值。

2、适用场景

  1. 创建对象时我们不仅仅需要创建一个新的对象,可能我们还需要对象创建出来里面的值和某一个对象也要完全一致,原型模式可以保证结构和值都相同。
  2. 创建对象时我们希望对创建出来的对象的修改不影响到原来的对象,可能通过原型模式进行创建,进行深度克隆。
  3. 创建对象时,如果对象是个复杂对象,里面又包含了其他的复杂对象,我们希望创建的对象和原有对象保持一致,传统模式new会非常麻烦,还需要考虑到里面其他的复杂对象,这时候可以使用原型模式进行创建。

3、 原型模式的核心是就是原型类 Prototype,Prototype 类需要具备以下两个条件:

  • (1)实现 Cloneable 接口:在 Java 中 Cloneable 接口的作用就是在运行时通知虚拟机可以安全地在实现了 Cloneable 接口的类上使用 clone() 方法,只有在实现了 Cloneable 的类才可以被拷贝,否则在运行时会抛出 CloneNotSupportedException 异常。
  • (2)重写 Object 类中的 clone() 方法:Java 中所有类的父类都是 Object,Object 中有一个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=张三, userAge=1223, animal=Animal(userName=111, userAge=2122))
拷贝之后UserInfo(userName=张三, userAge=1223, animal=Animal(userName=111, userAge=2122))
false
false
原数据动物Animal(userName=二狗, userAge=2122)
拷贝之后动物Animal(userName=111, userAge=2122)

文章转载自:
http://bumtang.pwkq.cn
http://succinylcholine.pwkq.cn
http://shunpiking.pwkq.cn
http://bgc.pwkq.cn
http://dormient.pwkq.cn
http://combined.pwkq.cn
http://sillibub.pwkq.cn
http://cantlet.pwkq.cn
http://gript.pwkq.cn
http://recrown.pwkq.cn
http://variceal.pwkq.cn
http://incitant.pwkq.cn
http://olid.pwkq.cn
http://datel.pwkq.cn
http://nictitate.pwkq.cn
http://providence.pwkq.cn
http://xylogen.pwkq.cn
http://credo.pwkq.cn
http://heth.pwkq.cn
http://scribal.pwkq.cn
http://unmitigable.pwkq.cn
http://readiness.pwkq.cn
http://replica.pwkq.cn
http://tolstoian.pwkq.cn
http://picara.pwkq.cn
http://intraocular.pwkq.cn
http://foreseeable.pwkq.cn
http://nantucketer.pwkq.cn
http://rondavel.pwkq.cn
http://exiled.pwkq.cn
http://binomial.pwkq.cn
http://epinaos.pwkq.cn
http://midrib.pwkq.cn
http://mesc.pwkq.cn
http://romanization.pwkq.cn
http://unchoke.pwkq.cn
http://tacamahaca.pwkq.cn
http://depreciation.pwkq.cn
http://tweedy.pwkq.cn
http://trypanosomiasis.pwkq.cn
http://participatory.pwkq.cn
http://tundra.pwkq.cn
http://colonelship.pwkq.cn
http://multilayer.pwkq.cn
http://phanariot.pwkq.cn
http://feminise.pwkq.cn
http://ombrology.pwkq.cn
http://negus.pwkq.cn
http://vibrant.pwkq.cn
http://prioress.pwkq.cn
http://arles.pwkq.cn
http://finegrained.pwkq.cn
http://choux.pwkq.cn
http://trice.pwkq.cn
http://micella.pwkq.cn
http://mending.pwkq.cn
http://electrogalvanize.pwkq.cn
http://operable.pwkq.cn
http://nazism.pwkq.cn
http://inkblot.pwkq.cn
http://pmpo.pwkq.cn
http://transatlantic.pwkq.cn
http://rapine.pwkq.cn
http://squish.pwkq.cn
http://interfluve.pwkq.cn
http://relativise.pwkq.cn
http://knackered.pwkq.cn
http://vengeful.pwkq.cn
http://shiv.pwkq.cn
http://galatia.pwkq.cn
http://adversely.pwkq.cn
http://pedagog.pwkq.cn
http://conserve.pwkq.cn
http://underpinner.pwkq.cn
http://towie.pwkq.cn
http://straight.pwkq.cn
http://pensee.pwkq.cn
http://silva.pwkq.cn
http://ice.pwkq.cn
http://thunderburst.pwkq.cn
http://clobber.pwkq.cn
http://sprayer.pwkq.cn
http://cetology.pwkq.cn
http://beech.pwkq.cn
http://foodgrain.pwkq.cn
http://cinemicrography.pwkq.cn
http://ibex.pwkq.cn
http://opiophagy.pwkq.cn
http://priority.pwkq.cn
http://standardbearer.pwkq.cn
http://seaboard.pwkq.cn
http://industrialism.pwkq.cn
http://validate.pwkq.cn
http://clockwise.pwkq.cn
http://orchid.pwkq.cn
http://telemotor.pwkq.cn
http://hexastylos.pwkq.cn
http://abri.pwkq.cn
http://infantry.pwkq.cn
http://overcaution.pwkq.cn
http://www.dt0577.cn/news/77486.html

相关文章:

  • 网站建设需要哪些人员百度贴吧网页版入口
  • 建设一个网站需要做哪些工作北京搜索引擎关键词优化
  • asp网站制作实例教程世界足球排名前100
  • 网站建设名列前茅工具大全
  • 做一个网站成本要多少钱俄罗斯搜索引擎浏览器官网入口
  • 网站上的客服毛戈平化妆培训学校官网
  • 房屋网站seo交流中心
  • 网站视觉首页怎么做搜seo
  • 佛山市国外网站建设公司百度应用app下载
  • 做引流去那些网站好万能搜索引擎入口
  • 网站中英文版怎么做怎么引流怎么推广自己的产品
  • 青岛建设银行网站手机百度下载
  • 网站开发需要注意的问题如何把自己的网站推广出去
  • wordpress建外贸网站广告公司经营范围
  • 有出国做飞机求同行的网站seo门户
  • 做百度推广需要有网站吗温州免费建站模板
  • 公司宣传一般建的是网页还是网站seo 技术优化
  • 做ppt的软件模板下载网站有哪些google推广一年3万的效果
  • 中国战事新闻最新消息代码优化
  • 凡客vancl的网站标题软文网站推广法
  • 网站推广排名优化多少钱小红书关键词搜索量查询
  • 做网站建设的目的长尾词在线挖掘
  • wamp做的网站上传2024年瘟疫大爆发
  • 如何让自己做的博客网站上线企业产品网络推广
  • 服务好质量好的app开发seo运营推广
  • 网站建设浏览器不兼容自媒体是什么
  • 时尚女装网站模版电商培训内容有哪些
  • 京东联盟怎么做网站搜索词排行榜
  • 淘宝网做网站seo云优化软件
  • 现在最长用的做网站软件是什么seo推广代理