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

自己做的视频网站视频加载慢成都 专业 网站建设

自己做的视频网站视频加载慢,成都 专业 网站建设,浅谈做网站的好处,精神文明建设网站结构型模式-享元模式 7.7享元模式7.7.1概念7.7.2场景7.7.3优势 / 劣势7.7.4享元模式可分为7.7.5享元模式7.7.6实战7.7.6.1题目描述7.7.6.2输入描述7.7.6.3输出描述7.7.6.4代码 8.1.7总结享元模式 7.7享元模式 7.7.1概念 ​ 享元模式是通过共享对象减少内存使用#xff0c;来… 结构型模式-享元模式 7.7享元模式7.7.1概念7.7.2场景7.7.3优势 / 劣势7.7.4享元模式可分为7.7.5享元模式7.7.6实战7.7.6.1题目描述7.7.6.2输入描述7.7.6.3输出描述7.7.6.4代码 8.1.7总结享元模式 7.7享元模式 7.7.1概念 ​ 享元模式是通过共享对象减少内存使用来提高程序性能。在此模式中分为内部状态和外部状态其中相似的对象被存储在享元对象内部并对于所有享元对象都是相同的且状态通常是不变的。只在需要时内部共享而不是每次创建新的对象。而外部状态是享元对象依赖的可能变化的部分。这部分状态不存储在享元对象内部而是在使用享元对象时传递给对象。 7.7.2场景 ​ 在棋类游戏中棋子可以看作是享元对象因为棋子与棋子之间有着相同的属性和方法例如在颜色、大小、移动规则上都有着相同的特质。因此在棋类游戏中可以使用享元模式来共享相同的棋子对象避免创建大量的棋子对象从而提高游戏性能。 7.7.3优势 / 劣势 减少内存消耗通过共享公共状态减少创建对象的数量提升性能通过共享对象来减少内存中对象的数量可以减少垃圾回收的频率 线程安全问题享元模式的对象可能会导致线程安全问题需要采取一定的措施适用场景有限享元模式存在大量相似对象的场景若不适用则会导致性能下降代码复杂度增加 7.7.4享元模式可分为 享元接口Flyweight所有具体享元类的共享接口通常包含对外部状态的操作具体享元类ConcreteFlyweight继承Flyweight类或实现享元接口包含内部状态享元工厂类FlyweightFactory创建并管理享元对象当用户请求时提供已创建的实例或者创建一个客户端Client维护外部状态在使用享元对象时将外部状态传递给享元对象 7.7.5享元模式 package com.technologystatck.designpattern.mode.flyweight;import java.util.HashMap; import java.util.Map;public class Flyweight {public static void main(String[] args) {//实例化享元工厂对象FlyweightFactory factory new FlyweightFactory();//获取或创建享元对象并传递外部状态Flyweights flyweightA factory.getFlyweight(A);flyweightA.operation(External State A);Flyweights flyweightB factory.getFlyweight(B);flyweightB.operation(External State B);Flyweights flyweightC factory.getFlyweight(A);flyweightC.operation(External State C);} } //创建享元接口 interface Flyweights {//操作外部状态void operation(String extrinsicState); }//实现具体享元类存储内部状态 class ConcreteFlyweight implements Flyweights{//内部状态private String intrinsicState;public ConcreteFlyweight(String intrinsicState) {this.intrinsicState intrinsicState;}Overridepublic void operation(String extrinsicState) {System.out.println(Intrinsic State: intrinsicState,External State: extrinsicState);} }//创建享元工厂类创建并管理Flyweight对象 //当用户请求一个Flyweight时享元工厂会提供一个已经创建的实例或创建一个 class FlyweightFactory{private MapString,Flyweights flyweightsnew HashMap();public Flyweights getFlyweight(String key){//若没有享元对象时就将传进来的key值创建一个if(!flyweights.containsKey(key)){flyweights.put(key,new ConcreteFlyweight(key));}return flyweights.get(key);}}7.7.6实战 7.7.6.1题目描述 ​ 在一个图形编辑器中用户可以绘制不同类型的图形包括圆形CIRCLE、矩形RECTANGLE、三角形TRIANGLE等。现在请你实现一个图形绘制程序要求能够共享相同类型的图形对象以减少内存占用。 7.7.6.2输入描述 输入包含多行每行表示一个绘制命令。每个命令包括两部分 图形类型Circle、Rectangle 或 Triangle 绘制的坐标位置两个整数分别表示 x 和 y 7.7.6.3输出描述 对于每个绘制命令输出相应图形被绘制的位置信息。如果图形是首次绘制输出 “drawn at”否则输出 “shared at”。 7.7.6.4代码 package com.technologystatck.designpattern.mode.flyweight;import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner new Scanner(System.in);//创建工厂实例GraphicFactory graphicFactory new GraphicFactory();while(scanner.hasNext()){String command scanner.nextLine();//定义一个静态方法proessCommand(graphicFactory,command);}}public static void proessCommand(GraphicFactory graphicFactory,String command){//定义数组存放类型变量String[] parts command.split( );DrawType drawTypeDrawType.valueOf(parts[0]);int xInteger.parseInt(parts[1]);int yInteger.parseInt(parts[2]);//Graphic graphicgraphicFactory.getGraphic(drawType);graphic.draw(new ConcretePosition(x,y));((ConcreteGraphic) graphic).setFirstTime(false);} }//使用枚举创建图形类型 enum DrawType{CIRCLE,RECTANGLE,TRIANGLE; }//创建坐标类 class ConcretePosition{//内部状态private int x;private int y;public ConcretePosition() {}public ConcretePosition(int x, int y) {this.x x;this.y y;}public int getX() {return x;}public void setX(int x) {this.x x;}public int getY() {return y;}public void setY(int y) {this.y y;} }//创建图像享元接口 interface Graphic{//外部状态void draw(ConcretePosition concretePosition); }//创建具体图形实现类 class ConcreteGraphic implements Graphic{//内部状态private DrawType drawType;public ConcreteGraphic(DrawType drawType) {this.drawType drawType;}//检查是否是第一次绘制该图形private Boolean isFirstTimetrue;public Boolean getFirstTime() {return isFirstTime;}public void setFirstTime(Boolean firstTime) {isFirstTime firstTime;}//描绘图形方法Overridepublic void draw(ConcretePosition concretePosition) {System.out.println(drawType(isFirstTime ? drawn:shared) at (concretePosition.getX() , concretePosition.getY()));} }//创建享元图形工厂 class GraphicFactory{private MapDrawType,Graphic graphicEditorsnew HashMap();//检查是否已创建对象public Graphic getGraphic(DrawType drawType){//若时第一次创建就实例化一个新对象否则就返回已经创建的对象。if(!graphicEditors.containsKey(drawType)){graphicEditors.put(drawType,new ConcreteGraphic(drawType));}return graphicEditors.get(drawType);} }8.1.7总结 享元模式 优点通过减少创建对象的数量以此来减少内存消耗提高程序的性能总结分为外部状态和内部状态内部状态主要是大量相似的对象外部状态是变化较大的对象场景用于包含大量相似对象且对象的内部状态可以共享外部状态变化较大时
http://www.w-s-a.com/news/105978/

相关文章:

  • 鲜花店网站源码成都专做婚介网站的公司
  • 合肥企业网站建设工哈尔滨公告
  • 华强北 做网站互联网服务平台入口
  • vi设计案例网站微信导航网站 dedecms
  • 青浦区做网站设计图片手绘图片
  • 做网站的基本功制作网站公司推荐
  • 阿里云快速建站教程个人网站 费用
  • 广东购物网站建设微信公众号制作模板免费
  • 阿里国际站韩语网站怎么做让移动网站
  • 北京外包做网站如何报价中国几大网络推广公司
  • 中国建设部网站关于资质wordpress 建app
  • 程序员找工作的网站哈尔滨建设信息网站
  • 公司 网站 方案高考写作网站
  • 网站后台如何登陆网站开发需求逻辑图
  • 市级档案网站建设情况分析server2008做DNS与网站
  • 公积金门户网站建设方案网站建设代理平台怎么做
  • 网站建设知识论文抖音开放平台是干什么的
  • 网站建设期末试卷大气简洁网站
  • 电子商务网站建设报告范文单位做网站怎么做
  • 优质的外国网站qq小程序在哪里打开
  • 商务网站建设与推广实训报告免费素材网站无水印
  • 外贸站seoapp开发公司历程概述
  • 沈阳网站推广¥做下拉去118cr陶瓷企业 瓷砖地板公司网站建设
  • 医院网站官方微信精神文明建设我做服装设计师的 求推荐资源网站
  • 微信网站建设需要那些资料昆明cms模板建站
  • 安庆网站建设兼职中企动力是500强吗
  • 网站排名优化技巧基于网站的网络营销方法有哪些
  • 摄影素材网站做知识问答的网站
  • 中小企业网站建设济南兴田德润电话门店管理系统软件排行
  • 昆明工程建设信息网站柳州网站建设公司哪家好