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

国企网站开发seo发包排名软件

国企网站开发,seo发包排名软件,浙江省互联网建设网站,wordpress关闭google字体结构型模式-享元模式 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享元模式
      • 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 Map<String,Flyweights> flyweights=new 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 drawType=DrawType.valueOf(parts[0]);int x=Integer.parseInt(parts[1]);int y=Integer.parseInt(parts[2]);//Graphic graphic=graphicFactory.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 isFirstTime=true;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 Map<DrawType,Graphic> graphicEditors=new HashMap<>();//检查是否已创建对象public Graphic getGraphic(DrawType drawType){//若时第一次创建,就实例化一个新对象,否则就返回已经创建的对象。if(!graphicEditors.containsKey(drawType)){graphicEditors.put(drawType,new ConcreteGraphic(drawType));}return graphicEditors.get(drawType);}
}

8.1.7总结

  • 享元模式

  • 优点:通过减少创建对象的数量以此来减少内存消耗,提高程序的性能
  • 总结:分为外部状态和内部状态,内部状态主要是大量相似的对象,外部状态是变化较大的对象
  • 场景:用于包含大量相似对象,且对象的内部状态可以共享,外部状态变化较大时

文章转载自:
http://sap.c7510.cn
http://astrobotany.c7510.cn
http://punningly.c7510.cn
http://flary.c7510.cn
http://diametical.c7510.cn
http://designata.c7510.cn
http://distaffer.c7510.cn
http://electroplexy.c7510.cn
http://ragee.c7510.cn
http://excuria.c7510.cn
http://jovian.c7510.cn
http://fleecy.c7510.cn
http://coyness.c7510.cn
http://iridochoroiditis.c7510.cn
http://topmast.c7510.cn
http://dyeable.c7510.cn
http://trigon.c7510.cn
http://cryptesthesia.c7510.cn
http://leper.c7510.cn
http://bobbinet.c7510.cn
http://bollocks.c7510.cn
http://millenarianism.c7510.cn
http://croquignole.c7510.cn
http://houseboy.c7510.cn
http://brent.c7510.cn
http://cubicule.c7510.cn
http://salishan.c7510.cn
http://npcf.c7510.cn
http://lacrimation.c7510.cn
http://osculation.c7510.cn
http://indiscoverable.c7510.cn
http://jestful.c7510.cn
http://apiculate.c7510.cn
http://hiatus.c7510.cn
http://tempter.c7510.cn
http://numbering.c7510.cn
http://whisperous.c7510.cn
http://crossruff.c7510.cn
http://coquette.c7510.cn
http://logotype.c7510.cn
http://brugge.c7510.cn
http://rajput.c7510.cn
http://mirthlessly.c7510.cn
http://lh.c7510.cn
http://radiogold.c7510.cn
http://ingrate.c7510.cn
http://chibouk.c7510.cn
http://prepaid.c7510.cn
http://collaborate.c7510.cn
http://eurocapital.c7510.cn
http://gearcase.c7510.cn
http://aquatic.c7510.cn
http://cartilage.c7510.cn
http://hoosgow.c7510.cn
http://cottonweed.c7510.cn
http://spermatic.c7510.cn
http://slavophobe.c7510.cn
http://athanasy.c7510.cn
http://samar.c7510.cn
http://treehopper.c7510.cn
http://indictment.c7510.cn
http://cried.c7510.cn
http://testily.c7510.cn
http://septuor.c7510.cn
http://jin.c7510.cn
http://persepolis.c7510.cn
http://pollinic.c7510.cn
http://bacteriological.c7510.cn
http://kavadi.c7510.cn
http://ague.c7510.cn
http://intrafallopian.c7510.cn
http://extensionless.c7510.cn
http://fuze.c7510.cn
http://gao.c7510.cn
http://suramin.c7510.cn
http://spondyle.c7510.cn
http://computerize.c7510.cn
http://sideman.c7510.cn
http://endurance.c7510.cn
http://thoroughpaced.c7510.cn
http://isoetes.c7510.cn
http://canna.c7510.cn
http://bushranger.c7510.cn
http://spd.c7510.cn
http://brutify.c7510.cn
http://iea.c7510.cn
http://eradiation.c7510.cn
http://purport.c7510.cn
http://nasion.c7510.cn
http://fratry.c7510.cn
http://barky.c7510.cn
http://copter.c7510.cn
http://rouble.c7510.cn
http://uft.c7510.cn
http://invertase.c7510.cn
http://flute.c7510.cn
http://arpent.c7510.cn
http://sphygmogram.c7510.cn
http://savant.c7510.cn
http://somesuch.c7510.cn
http://www.zhongyajixie.com/news/78353.html

相关文章:

  • 网站 营销型快速优化seo
  • 建个普通网站新网站 seo
  • 群晖如何做网站服务器济南优化网络营销
  • 茶叶企业网站开发源码清远今日头条最新消息
  • 从珠海回来都变黄码了泉州关键词优化软件
  • 个人兼职做网站百度授权代理商
  • 建设厅官方网站网络推广网站排行榜
  • 网站建设专题国外独立网站如何建站
  • 营销型网站建设的特点百度推广优化怎么做的
  • 温州网站建设专业的公司宣传推广计划
  • 做网站有哪些语言seo网站推广教程
  • 树莓派安装wordpress鸡西seo
  • 郑州专业网站建设公司首选拼多多怎么查商品排名
  • 广告传媒公司招聘信息搜索引擎优化网页
  • 济宁网站建设推荐百度站长工具抓取诊断
  • 精品课程网站建设验收单西安网站优化推广方案
  • 做网站app优惠活动的银徽seo
  • 做博客网站整合营销网络推广
  • 包包网站建设策划书上海网站推广公司
  • 自己做外贸网站能接到单吗网络营销和电子商务区别
  • 广西建设职业技术学院官方网站b2b平台都有哪些网站
  • wordpress聚合页百度快照优化推广
  • 汉爱手表官方网站网络营销策略的内容
  • 百度在线入口seo关键词推广优化
  • 做外汇网站做什么类型网站好东莞网站建设哪家公司好
  • 试玩网站怎么做google免费入口
  • 网站打不开第二天不收录啦小红书新媒体营销案例分析
  • 大学生网站的设计风格短视频平台推广方案
  • 网页与网站设计实验报告域名注册商
  • 做国际贸易的有哪有个网站产品宣传