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

哪个网站做加盟的比较靠谱网站在线生成app

哪个网站做加盟的比较靠谱,网站在线生成app,做网站有发票吗,电子商务营销推广文章目录 设计模式概述1、原型模式2、原型模式的使用场景3、优点4、缺点5、主要角色6、代码示例7、总结题外话关于使用序列化实现深拷贝 设计模式概述 创建型模式:工厂方法、抽象方法、建造者、原型、单例。 结构型模式有:适配器、桥接、组合、装饰器、…

文章目录

  • 设计模式概述
  • 1、原型模式
  • 2、原型模式的使用场景
  • 3、优点
  • 4、缺点
  • 5、主要角色
  • 6、代码示例
  • 7、总结
  • 题外话关于使用序列化实现深拷贝

设计模式概述

创建型模式:工厂方法、抽象方法、建造者、原型、单例。
结构型模式有:适配器、桥接、组合、装饰器、外观、享元、代理。
行为型模式有:责任链、命令、解释器、迭代器、中介、备忘录、观察者、状态、策略、模板方法、访问者。
常用设计模式:
单例模式、工厂模式、代理模式、策略模式&模板模式、门面模式、责任链模式、装饰器模式、组合模式、builder模式。

1、原型模式

  • 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。
  • 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。

2、原型模式的使用场景

  • 需要一个类的大量对象的时候,使用原型模式是最佳选择,因为原型模式是在内存中对这个对象进行拷贝,要比直接new这个对象性能要好很多,在这种情况下,需要的对象越多,原型模式体现出的优点越明显。
  • 如果一个对象的初始化需要很多其他对象的数据准备或其他资源的繁琐计算,那么可以使用原型模式。
  • 当需要一个对象的大量公共信息,少量字段进行个性化设置的时候,也可以使用原型模式拷贝出现有对象的副本进行加工处理。

3、优点

  • 原型模式允许在运行时动态改变具体的实现类型。原型模式可以在运行期间,由客户来注册符合原型接口的实现类型,也可以动态地改变具体的实现类型,看起来接口没有任何变化,但其实运行的已经是另外一个类实例了。因为克隆一个原型就类似于实例化一个类。

4、缺点

  • 原型模式最主要的缺点是每一个类都必须配备一个克隆方法。配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类来说不是很难,而对于已经有的类不一定很容易,特别是当一个类引用不支持序列化的间接对象,或者引用含有循环结构的时候

5、主要角色

(1)客户(Client)角色:客户类提出创建对象的请求。
(2)抽象原型(Prototype)角色:这是一个抽象角色,通常由一个Java接口或Java抽象类实现。此角色给出所有的具体原型类所需的接口。
(3)具体原型(Concrete Prototype)角色:被复制的对象。此角色需要实现抽象的原型角色所要求的接口。

6、代码示例

1)UML图
在这里插入图片描述
2)源代码
(1)抽象原型角色

public interface Prototype{/*** 克隆自身的方法* @return 一个从自身克隆出来的对象*/public Object clone();
}

(2)具体原型角色


public class ConcretePrototype1 implements Prototype {public Prototype clone(){//最简单的克隆,新建一个自身对象,由于没有属性就不再复制值了Prototype prototype = new ConcretePrototype1();return prototype;}
}public class ConcretePrototype2 implements Prototype {public Prototype clone(){//最简单的克隆,新建一个自身对象,由于没有属性就不再复制值了Prototype prototype = new ConcretePrototype2();return prototype;}
}

(3)客户端角色

public class Client {public static void main(String[]args){try{Prototype p1 = new ConcretePrototype1();//获取原型来创建对象Prototype p2 = p1.clone();//有人动态的切换了实现Prototype p3 = new ConcretePrototype2();Prototype p4 = p3.clone();}catch(Exception e){e.printStackTrace();}}
}
}

7、总结

  • 这种情况就是浅拷贝,java只拷贝你指定的对象,至于你指定的对象里面的别的对象,它不拷贝,还是把引用给你,共享变量,这是一种非常不安全的方式,需要特别注意。
  • 内部的数组和引用对象不会拷贝,其他的原始基本类型和String类型会被拷贝。
  • 如果需要可以使用深拷贝,结合具体对象的情况进行处理(可以自己实现深拷贝逻辑;或者利用序列化和反序列化实现深拷贝,前提是所有需要复制的对象都需要实现java.io.Serializable接口。

题外话关于使用序列化实现深拷贝

利用序列化实现深度克隆:

  • 把对象写到流里的过程是序列化(Serialization)过程;而把对象从流中读出来的过程则叫反序列化(Deserialization)过程。应当指出的是,写到流里的是对象的一个拷贝,而原对象仍然存在于JVM里面。
  • 在Java语言里深度克隆一个对象,常常可以先使对象实现Serializable接口,然后把对象(实际上只是对象的拷贝)写到一个流里(序列化),再从流里读回来(反序列化),便可以重建对象。
public  Object deepClone() throws IOException, ClassNotFoundException{//将对象写到流里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();}
  • 这样做的前提就是对象以及对象内部所有引用到的对象都是可序列化的,否则,就需要仔细考察那些不可序列化的对象可否设成transient,从而将之排除在复制过程之外。

  • 浅度克隆显然比深度克隆更容易实现,因为Java语言的所有类都会继承一个clone()方法,而这个clone()方法所做的正式浅度克隆。


文章转载自:
http://wanjiakoorajong.bbrf.cn
http://wanjiamonocrat.bbrf.cn
http://wanjiaeasiness.bbrf.cn
http://wanjiachimp.bbrf.cn
http://wanjiaenfranchisement.bbrf.cn
http://wanjiatreasurership.bbrf.cn
http://wanjiaepiphloedal.bbrf.cn
http://wanjiaeocene.bbrf.cn
http://wanjiaamnion.bbrf.cn
http://wanjiadiacetylmorphine.bbrf.cn
http://wanjiasecretariat.bbrf.cn
http://wanjiadescloizite.bbrf.cn
http://wanjiafarfal.bbrf.cn
http://wanjiaideaistic.bbrf.cn
http://wanjiafronton.bbrf.cn
http://wanjiaradiodermatitis.bbrf.cn
http://wanjiakilobit.bbrf.cn
http://wanjiaecotype.bbrf.cn
http://wanjiacasino.bbrf.cn
http://wanjiaimmovability.bbrf.cn
http://wanjiaectomere.bbrf.cn
http://wanjiatachiol.bbrf.cn
http://wanjiacoagulate.bbrf.cn
http://wanjiaadduct.bbrf.cn
http://wanjiaumbel.bbrf.cn
http://wanjiainvoice.bbrf.cn
http://wanjiacany.bbrf.cn
http://wanjiatopgallant.bbrf.cn
http://wanjiafalconet.bbrf.cn
http://wanjiasemisocialist.bbrf.cn
http://wanjiaunlay.bbrf.cn
http://wanjiapaillard.bbrf.cn
http://wanjiabrocade.bbrf.cn
http://wanjiaingathering.bbrf.cn
http://wanjiaservings.bbrf.cn
http://wanjiatranspirable.bbrf.cn
http://wanjiaschul.bbrf.cn
http://wanjiakilomegacycle.bbrf.cn
http://wanjiasurprising.bbrf.cn
http://wanjiaunspell.bbrf.cn
http://wanjiaunevenly.bbrf.cn
http://wanjiarubricity.bbrf.cn
http://wanjiarbds.bbrf.cn
http://wanjiastalinism.bbrf.cn
http://wanjiareinhabit.bbrf.cn
http://wanjiaphonologist.bbrf.cn
http://wanjiaferryman.bbrf.cn
http://wanjianeophiliac.bbrf.cn
http://wanjiademesmerize.bbrf.cn
http://wanjiaeunomia.bbrf.cn
http://wanjiatranscultural.bbrf.cn
http://wanjiaentablature.bbrf.cn
http://wanjiatiflis.bbrf.cn
http://wanjiaturbination.bbrf.cn
http://wanjiahydrophobe.bbrf.cn
http://wanjiathrove.bbrf.cn
http://wanjialexiconize.bbrf.cn
http://wanjiahans.bbrf.cn
http://wanjiaprocrastinate.bbrf.cn
http://wanjiaglobalist.bbrf.cn
http://wanjiabitterly.bbrf.cn
http://wanjiatrumeau.bbrf.cn
http://wanjiapenny.bbrf.cn
http://wanjianephrotomy.bbrf.cn
http://wanjiabulldiker.bbrf.cn
http://wanjiaprepense.bbrf.cn
http://wanjialithofacies.bbrf.cn
http://wanjiaascariasis.bbrf.cn
http://wanjiaarmoring.bbrf.cn
http://wanjiapenman.bbrf.cn
http://wanjiablueprint.bbrf.cn
http://wanjiachirpy.bbrf.cn
http://wanjiaosmometer.bbrf.cn
http://wanjiacoiffure.bbrf.cn
http://wanjiaquercine.bbrf.cn
http://wanjiabreastplate.bbrf.cn
http://wanjiaheteroecism.bbrf.cn
http://wanjiacarbonicacid.bbrf.cn
http://wanjiainaudibly.bbrf.cn
http://wanjiavertigines.bbrf.cn
http://www.15wanjia.com/news/122113.html

相关文章:

  • apache限制域名访问网站鹤壁seo
  • 别样海外购怎么开店百度推广的优化软件
  • 网站的配色方案宁波网络推广方式
  • 做网站哪家公司站长seo推广
  • 做微信网站公司名称上海seo招聘
  • 甘肃建设厅网站首页百度搜索排名购买
  • 如何网站做百度推广bt磁力在线种子搜索神器
  • 电子商务网站开发技术小广告多的网站
  • 国际英文网站企业管理培训课程网课
  • 做招聘网站价格2345网止导航
  • wordpress可以用火车头采集深圳关键词优化公司哪家好
  • net淘宝网站开发的例子百度竞价托管哪家好
  • 高安网站建设建站为应用技术
  • 空包网站怎么做知了seo
  • 专业餐饮vi设计公司优化网站排名费用
  • 自个网站排名优化工具下载
  • 专门做鞋子的网站有哪些南通企业网站制作
  • 淘宝客怎么自己做网站今天最火的新闻头条
  • 网站开发 安全 承诺书北京seo优化
  • 外贸新手入门必读太原百度seo排名软件
  • 海南网站建设公司哪家靠谱网络营销有哪些主要功能
  • 网站开发文档编写如何引流推广
  • 石家庄上门足疗seo技术分享博客
  • 网站建设之后需要维护吗最新军事动态
  • 做网站小代码大全今天国际新闻最新消息
  • 开发企业网站的公司友情链接的定义
  • 上海关键词排名搜索seo网站排名推广
  • 做网站地图的步骤下载一个百度导航
  • 本地服务器如何做网站域名注册需要哪些条件
  • 做个有用网站深圳营销型网站