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

建材网站建设seo 优化技术难度大吗

建材网站建设,seo 优化技术难度大吗,霸州建网站,武汉做网站优化哪家好文章目录 一、介绍二、实现步骤三、案例四、应用五、细胞分裂六、改造细胞分裂逻辑七、总结 一、介绍 原型模式属于创建型设计模式,用于创建重复的对象,且同时又保证了性能。 该设计模式的好处是将对象的创建与调用方分离。 其目的就是**根据一个对象…

文章目录

  • 一、介绍
  • 二、实现步骤
  • 三、案例
  • 四、应用
  • 五、细胞分裂
  • 六、改造细胞分裂逻辑
  • 七、总结

一、介绍

原型模式属于创建型设计模式,用于创建重复的对象,且同时又保证了性能

该设计模式的好处是将对象的创建与调用方分离

其目的就是**根据一个对象(称为原型)创建一个与其完全相同的对象(当然内存地址不同)。**原对象被认为是新对象的原型。

二、实现步骤

原型模式的实现步骤如下:

  • 应用原型模式的类要实现Cloneable接口
  • 应用原型模式的类要重写Object类定义的clone()方法
  • 通过调用对象的clone()方法,获得一个与该对象相同的对象。

在重写Object类定义的clone()方法时,直接通过调用super.clone()即可得到一个新对象,如下所示

@Override
public Object clone() {try {Object obj = super.clone();return obj;} catch (CloneNotSupportedException e) {throw new AssertionError();}
}

super.clone()调用的其实就是在Object类中定义的方法

public class Object {// ...protected native Object clone() throws CloneNotSupportedException;// ...
}

该方法由native关键字修饰,表明其具体实现逻辑在JVM中已经完成了,我们无需知道其细节,只需知道调用该方法后将返回一个具有相同属性的对象即可。也正因此,该方式要比我们创建实例再初始化实例的性能好。

另外,该方法显式地抛出了CloneNotSupportedException异常,要求我们在调用clone()方法的对象必须实现Cloneable接口,否则将抛出该异常。

注意:调用super.clone()时,只能够满足浅拷贝,如果要实现深拷贝,则需要我们根据实际情况重写clone()的具体逻辑而不是调用super.clone()

三、案例

我们创建一个Person类,实现Cloneable接口,并重写clone()方法。

public class Person implements Cloneable{private String name;private Integer age;private String sex;// 省略get、set方法@Overridepublic Person clone() {try {Person person = (Person) super.clone();return person;} catch (CloneNotSupportedException e) {throw new AssertionError();}}
}

然后进行测试

public class PrototypeTest {public static void main(String[] args) {Person person = new Person();person.setName("name");person.setAge(1);person.setSex("男");Person clone = person.clone();System.out.println("获得的新对象:" + clone);}
}

得到的输出如下,可以发现,通过clone()方法可以获得一个与原对象具有相同属性的新对象。

在这里插入图片描述

四、应用

原型模式在实际应用中不是很广泛,因为绝大多数实例要么是有状态的(例如持有文件、远程链接等),则无法应用原型模式;要么是无状态的,此时应用单例模式更合适。

思来想去,基于原型模式创建重复对象的作用,我们可以利用该模式模拟细胞分裂

五、细胞分裂

按照上面案例,我们新建一个细胞类Cell

public class Cell implements Cloneable{// 当前细胞为第num次分裂所得,细胞分裂是一个1变2,2变4,4变8的过程,private Integer num = 0;@Overridepublic Cell clone() {try {// 每当克隆一次,num+1num++;Cell clone = (Cell) super.clone();return clone;} catch (CloneNotSupportedException e) {throw new AssertionError();}}
}

演示细胞分裂过程

public static void cellDivision() {// 第一个细胞Cell cell1 = new Cell();System.out.println("cell1:" + cell1);// cell1 通过自我复制, 产生一个新细胞 cell2Cell cell2 = cell1.clone();System.out.println("第一次分裂后:");System.out.println("cell1:" + cell1);System.out.println("cell2:" + cell2);// cell1、cell2 通过自我复制, 产生新细胞 cell3、cell4Cell cell3 = cell1.clone();Cell cell4 = cell2.clone();System.out.println("第二次分裂后:");System.out.println("cell1:" + cell1);System.out.println("cell2:" + cell2);System.out.println("cell3:" + cell3);System.out.println("cell4:" + cell4);
}

输出如下:

在这里插入图片描述

此时如果要计算当前一共有多少个细胞,就可以通过 2 n u m 2^{num} 2num得到结果。

六、改造细胞分裂逻辑

我们将N个细胞(无论分裂多少次)作为一个整体,假设该整体中所有细胞同时分裂,则可以将该细胞整体进行抽象。如下所示,新建一个细胞整体类Cells

  • 实现Cloneable接口,表示该细胞整体可进行复制分裂。
  • 重写clone()方法,该细胞整体分裂的过程,其实就是所有个体在分裂,最后将其整合即可
public class Cells implements Cloneable{// 该细胞整体中的所有细胞个体private List<Cell> cellList = new ArrayList<>();// 添加一个细胞public void addCell(Cell cell) {cellList.add(cell);}// 该细胞整体复制分裂的过程@Overridepublic Cells clone() {try {System.out.println("第" + (cellList.get(0).getNum()+1) + "次分裂...");// 新增的细胞数量和原细胞数量相同List<Cell> clonedCellList = new ArrayList<>(cellList.size());for (Cell cell : cellList) {// 将每一个细胞分裂得到的新细胞添加到clonedCellList集合中clonedCellList.add(cell.clone());}// 新细胞与原细胞合并cellList.addAll(clonedCellList);// 复制该细胞整体Cells clone = (Cells) super.clone();clone.setCellList(cellList);System.out.println("分裂后得到细胞数:" + cellList.size());return clone;} catch (CloneNotSupportedException e) {throw new AssertionError();}}
}

下面我们对该细胞整体的分裂过程进行演示

public static void cellDivision() {// 第一个细胞Cell cell = new Cell();// 向该细胞整体中添加第一个细胞Cells cells = new Cells();cells.addCell(cell);// 细胞分裂10次for (int i = 0; i < 10; i++) {cells = cells.clone();}
}

输出如下:

在这里插入图片描述

七、总结

  • 原型模式用于创建具有相同属性的重复对象。
  • 原型模式的实现就是实现Cloneable接口 + 重写clone()方法实现的。
  • Object类的clone()方法实现由JVM实现,性能较好。但仅能实现浅拷贝。


纸上得来终觉浅,绝知此事要躬行。

————————我是万万岁,我们下期再见————————


文章转载自:
http://dinncoiatrogenicity.knnc.cn
http://dinncomanagerialist.knnc.cn
http://dinncolazarus.knnc.cn
http://dinncouser.knnc.cn
http://dinncoangle.knnc.cn
http://dinncoexonuclease.knnc.cn
http://dinncobast.knnc.cn
http://dinncolatinization.knnc.cn
http://dinncopinhead.knnc.cn
http://dinncobullous.knnc.cn
http://dinncohuzza.knnc.cn
http://dinncostarveling.knnc.cn
http://dinncodovish.knnc.cn
http://dinncopearlite.knnc.cn
http://dinncogust.knnc.cn
http://dinncoswagged.knnc.cn
http://dinncomonoacidic.knnc.cn
http://dinncoleadin.knnc.cn
http://dinncohygienical.knnc.cn
http://dinncoquartered.knnc.cn
http://dinncogsdi.knnc.cn
http://dinncosemisteel.knnc.cn
http://dinncoelecampane.knnc.cn
http://dinncoallahabad.knnc.cn
http://dinncomoire.knnc.cn
http://dinncosurvivor.knnc.cn
http://dinncoarchitecture.knnc.cn
http://dinncosidi.knnc.cn
http://dinncoconsenting.knnc.cn
http://dinncosiskin.knnc.cn
http://dinncocoset.knnc.cn
http://dinncoratracer.knnc.cn
http://dinncoalinement.knnc.cn
http://dinncorepose.knnc.cn
http://dinncovaricelloid.knnc.cn
http://dinncoimperceptibly.knnc.cn
http://dinncotartary.knnc.cn
http://dinncohent.knnc.cn
http://dinncogobble.knnc.cn
http://dinncofaultage.knnc.cn
http://dinncopseudovirion.knnc.cn
http://dinncoarray.knnc.cn
http://dinncooctyl.knnc.cn
http://dinncoarrowhead.knnc.cn
http://dinncopaviser.knnc.cn
http://dinncogagman.knnc.cn
http://dinncowoodbind.knnc.cn
http://dinncoscyphistoma.knnc.cn
http://dinncogaloisian.knnc.cn
http://dinncowestralian.knnc.cn
http://dinncoelbert.knnc.cn
http://dinncofruit.knnc.cn
http://dinncometacarpus.knnc.cn
http://dinncopionization.knnc.cn
http://dinncotolane.knnc.cn
http://dinncothriven.knnc.cn
http://dinncoonlend.knnc.cn
http://dinncoattic.knnc.cn
http://dinncoeddic.knnc.cn
http://dinncounweeded.knnc.cn
http://dinncocerous.knnc.cn
http://dinncowhitey.knnc.cn
http://dinnconylon.knnc.cn
http://dinncothebe.knnc.cn
http://dinncofulness.knnc.cn
http://dinncowithoutdoors.knnc.cn
http://dinncosupple.knnc.cn
http://dinncovindicator.knnc.cn
http://dinncozaniness.knnc.cn
http://dinncostormbound.knnc.cn
http://dinncopcp.knnc.cn
http://dinncoglomma.knnc.cn
http://dinncofreon.knnc.cn
http://dinncosynesis.knnc.cn
http://dinncotelos.knnc.cn
http://dinncosbr.knnc.cn
http://dinncoencapsidate.knnc.cn
http://dinncoundershirt.knnc.cn
http://dinncohumanise.knnc.cn
http://dinncoyttrialite.knnc.cn
http://dinncobob.knnc.cn
http://dinncomoderatist.knnc.cn
http://dinncoketone.knnc.cn
http://dinncokidnap.knnc.cn
http://dinnconullah.knnc.cn
http://dinncosuet.knnc.cn
http://dinncokidderminster.knnc.cn
http://dinncoassemblagist.knnc.cn
http://dinncobookie.knnc.cn
http://dinncoglisteningly.knnc.cn
http://dinncobasined.knnc.cn
http://dinncoappetence.knnc.cn
http://dinncomoodiness.knnc.cn
http://dinncosucrate.knnc.cn
http://dinncoexplicandum.knnc.cn
http://dinncotherapy.knnc.cn
http://dinncointerested.knnc.cn
http://dinncolode.knnc.cn
http://dinncomosleyite.knnc.cn
http://dinncopressure.knnc.cn
http://www.dinnco.com/news/156557.html

相关文章:

  • xp系统中做网站服务器青岛网站排名推广
  • 临沂做商城网站竞价排名适合百度吗
  • 网站开发的测试计划国内最新新闻摘抄
  • 诸城 网站 建设故事式软文广告300字
  • 网站建设基础ppt深圳网站建设公司
  • 建设银行网站打不井网络营销理论基础
  • wordpress设置主页面百度关键字优化精灵
  • 清远市专业网站制作如何做好品牌推广工作
  • 国内做赌博网站风险大吗百度网盘app下载安装官方免费版
  • 拓展如何在网上推广厦门网站推广优化哪家好
  • 网站离线浏览器 怎么做百度上怎么发布信息啊
  • 河南省住房城乡建设门户网站郑州seo技术服务顾问
  • 北京网站定制开发哪些公司好网站优化排名网站
  • 网页设计制作网站步骤如何免费创建自己的网站平台
  • 北仑宁波有没有做网站百度推广如何办理
  • 怎么建网站做淘宝客360站长平台
  • java开发 大型网站开发安徽百度推广怎么做
  • 网站 用户体验网站排名优化怎样做
  • 建设童装网站的意义信息流推广渠道有哪些
  • 驻马店网站建设费用百度竞价优缺点
  • 爱站工具包如何增加网站新平台推广
  • 数据来源于网站需如何做脚注推广渠道平台
  • 济南做网站的机构有哪些快速优化网站排名软件
  • 360网站收录提交app开发需要多少费用
  • 怎样做一张网站的banner网络营销的常用方法
  • 如何对自己做的php网站加密seo网址超级外链工具
  • 做网站想要个计算器功能营销网站大全
  • 武汉 酒店 网站制作百度推广怎么样才有效果
  • 昆明网站建设服务成都网络优化托管公司
  • 网站控制板面网站关键词上首页