范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java设计模式之享元模式

  一、概述
  享元模式:"享"就是分享之意,指一物被众人共享,而这也正是该模式的宗旨所在。
  享元模式有点类似于单例模式,都是只生成一个对象来被共享使用。这里有个问题,那就是对共享对象的修改,为了避免出现这种情况,我们将这些对象的公共部分,或者说是不变化的部分抽取出来形成一个对象。这个对象就可以避免修改的问题。
  享元的目的是为了减少不会要额内存消耗,将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象,以此来降低内存的消耗。二、示例
  下面我们来看一个简单的例子:
  建筑接口:JianZhupublic interface Jianzhu {     void use(); }
  体育馆实现类:TiYuGuanpublic class TiYuGuan implements Jianzhu {     private String name;     private String shape;     private String yundong;     public TiYuGuan(String yundong){         this.setYundong(yundong);     }     public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     }     public String getShape() {         return shape;     }     public void setShape(String shape) {         this.shape = shape;     }     public String getYundong() {         return yundong;     }     public void setYundong(String yundong) {         this.yundong = yundong;     }     @Override     public void use() {         System.out.println("该体育馆被使用来召开奥运会" + "  运动为:"+ yundong+"  形状为:"+shape+ "  名称为:"+name);     } }
  建筑工厂类:JianZhuFactoryimport java.util.*;  public class JianZhuFactory {     private static final Map tygs = new HashMap();     public static TiYuGuan getTyg(String yundong){         TiYuGuan tyg = tygs.get(yundong);         if(tyg == null){             tyg = new TiYuGuan(yundong);             tygs.put(yundong,tyg);         }         return tyg;     }     public static int getSize(){         return tygs.size();     } }
  测试类:Clienterpublic class Clienter {     public static void main(String[] args) {         String yundong ="足球";         for(int i = 1;i <= 5;i++){             TiYuGuan tyg = JianZhuFactory.getTyg(yundong);             tyg.setName("中国体育馆");             tyg.setShape("圆形");             tyg.use();             System.out.println("对象池中对象数量为:"+JianZhuFactory.getSize());         }     } }
  执行结果:该体育馆被使用来召开奥运会  运动为:足球  形状为:圆形  名称为:中国体育馆 对象池中对象数量为:1 该体育馆被使用来召开奥运会  运动为:足球  形状为:圆形  名称为:中国体育馆 对象池中对象数量为:1 该体育馆被使用来召开奥运会  运动为:足球  形状为:圆形  名称为:中国体育馆 对象池中对象数量为:1 该体育馆被使用来召开奥运会  运动为:足球  形状为:圆形  名称为:中国体育馆 对象池中对象数量为:1 该体育馆被使用来召开奥运会  运动为:足球  形状为:圆形  名称为:中国体育馆 对象池中对象数量为:1三、模式解析
  如上示例中,使用工厂模式进行配合,创建对象池,测试类中的循环,你可以想象成为要举行5场比赛,每场比赛的场地就是体育馆
  通过执行结果可以看出,在这个对象池(HashMap)中,一直都只有一个对象存在,第一次使用的时候创建对象,之后的每次调用都用的是那个对象,不会再重新创建。
  其实在Java中就存在这种类型的实例:String。
  Java中将String类定义为final(不可改变的),JVM中字符串一般保存在字符串常量池中,这个字符串常量池在jdk 6.0以前是位于常量池中,位于永久代,而在JDK 7.0中,JVM将其从永久代拿出来放置于堆中。
  我们使用如下代码定义的两个字符串指向的其实是同一个字符串常量池中的字符串值。String s1 = "abc"; String s2 = "abc";
  如果我们以s1==s2进行比较的话所得结果为:true,因为s1和s2保存的是字符串常量池中的同一个字符串地址。这就类似于我们今天所讲述的享元模式,字符串一旦定义之后就可以被共享使用,因为他们是不可改变的,同时被多处调用也不会存在任何隐患。四、使用场景
  当我们项目中创建很多对象,而且这些对象存在许多相同模块,这时,我们可以将这些相同的模块提取出来采用享元模式生成单一对象,再使用这个对象与之前的诸多对象进行配合使用,这样无疑会节省很多空间。
  在JDK中整型的包装类型内部就都使用了享元模式,Byte、Short、Integer、Long内部均对-128~127的值缓存起来,共享使用。
  更常见的是Java中的各种池:数据库连接池、线程池等,也是这个思想。

比滴灌更牛的技术,你知道是什么吗?在农业生产活动中,不可缺少的便是灌溉设备,为了保护环境,节约水资源,我们发明出了适用于良田的灌溉设备,比如滴灌,抽水漫灌,喷灌,纯人力灌溉。在很多人眼中,喷灌,滴灌已经是很先进的技罗永浩怒怼电信运营商恶俗彩铃网友就需要这种认死理的人近日,国内三大电信运营商都公布了各自2021年营业收入及利润,三家运营商去年的日利润超过了4亿元,可谓是日进斗金。不过3月12日下午,老罗罗永浩在微博发文,痛批运营商的视频彩铃套餐身价上亿元的阿里前台和世界上最贵的错误童文红入职阿里之前,因结婚生子,在家待了一年半。直到2000年的时候,看到了一则阿里的招聘启事,便决定去应聘行政助理的职位,谁曾想却阴差阳错地被安排到了一个前台的岗位。就这样,童文四大视频会员对比爱奇艺腾讯视频芒果TV优酷哪个最值得买众所周知,追剧看综艺是最能打发时间的,但随着国内版权市场的逐渐规范,刚上新的热门影视资源和综艺节目大多需要VIP会员才能观看,而且为了不看超长的广告,获得更好的观影体验,很多用户也波导手机消亡史波导,手机中的战斗机!这句广告词很多人都听过,脑海里也会下意识浮现出李玟代言的那个广告画面。曾几何时,波导手机可谓是第一代国产手机的翘楚,广告布及大街小巷,一度成为功能机时代的宠儿前魅族系统工程师洪汉生跳槽OPPO,三年后再次发声IT之家3月20日消息,2019年,有消息称魅族工程师洪汉生已从魅族离职,去了OPPO,随后这条消息被盖文张(前魅族科技总监)转发,称我知道但我不能说,他也是不得已才离开,魅友不要Vidda将推出纯三色激光微投画质碾压行业现有产品3月21日消息,海信视像(代码600060)今日发布公告,其中透露近期将推出激光便携智能投影。有分析人士认为,这款产品就是此前已经传闻多时的Vidda激光微投产品。根据公告内容,海价格相差700元,红米k50Pro和小米12如何选择?在乎性价比的选择红米K50Pro,在价格更低的基础上,还有几项优势1性能上,搭载的天玑9000芯片和小米12的全新骁龙8性能差不多,但能耗控制更优秀,特别是中低负载下更省电更耐用。上市前测30万小时雷军新梗诞生,好家伙一个机型测34年才出关雷军与我国短跑冠军苏炳添在小米实验室的视频中曾说过一个梗,那就是小米性能测试要经过30万小时才能上市,那么30万小时具体是多久呢?是一万两千五百天,合计34年。口误34万小时也够离1599元的骁龙888手机来了,这要逼死小米啊大家都知道,今年的骁龙8新机真的是又烫又拉!更搞笑的是,发布会上在散热方面吹得越狠的手机,实际到手游戏调度就越怂可以说,这波骁龙8新机的体验真的是各种倒退。这都算了,关键是这些新机小米12和小米11Pro,哪个相机更好,哪个更值得买?小米12和小米11Pro,哪个相机更好,哪个更值得买?鱼和熊掌不可兼得,要说小米12和小米11pro哪个相机更好?这里本人说一说它们两者之间的区别。小米手机中的Pro版本是很常见的
外媒评选的2021年十项最佳手机,结果很意外,国产手机仅一款入选今天的智能手机都具有令人难以置信的移动体验,可帮助您在远离办公室现场以及任何地方完成工作或者休闲娱乐。当然,人们对手机也有了更高的要求。有些智能手机在摄影方面表现出色,有些手机可以金蝶用友,舞剑SaaS配图来自Canva可画在百花齐放的ERP(企业资源管理)市场,一直有这样一个说法叫南金蝶,北用友。金蝶指的就是总部定在深圳的金蝶国际,用友指的是地处北京的用友网络,从这句略带江湖气终于有人把Docker讲清楚了,Docker入门教程,原来这么简单Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中,然后发布到任何流行的机器上。Docker的迅猛发展和全新理念,席卷了新骁龙8发布后饱受关注,全新5G基带和GPU,各方面体验升级不久前,高通正式宣布骁龙品牌正式独立,吸引了许多人的目光。高通骁龙是大家非常熟悉的叫法,为何高通要把骁龙独立出来呢?这也引起了大众的许多讨论。实际上,高通如今的骁龙芯片已经不局限于国芯科技IPO注册成功助力高端芯片国产化替代2021年12月7日,证监会发布消息,其按法定程序同意苏州国芯科技股份有限公司(以下简称国芯科技)科创板首次公开发行股票注册。根据招股书显示,国芯科技是一家聚焦于国产自主可控嵌入式2021年12月29日雷军回应小米对标苹果遭冷嘲热讽信号自拍等遥遥领先12月28日,小米正式发布小米12系列手机。其中,小米12为小屏旗舰,6。28英寸,售价3699元起小米12Pro为6。73英寸大屏支付宝相互宝关停,监管不背这个锅作为最早加入相互宝的一批用户,相互宝如今这个结局,只能用一句话,一切都是最好的安排,但监管肯定不能背这个锅!当初加入相互宝,最主要的原因就是想看看,这场伟大的社会实践会是怎样的发展苹果将在2023年为iPhone取消SIM卡槽最近,据外媒的爆料消息,苹果将在2023年推出的iPhone上取消实体SIM卡槽设计,成为首款完全采用eSIM的无实体SIM卡机型。苹果在iPhoneXS系列中采用了双卡双待设计,机构预测未来三年增速最高的数字经济核心龙头股十四五国家信息化规划发布本次国家信息规划数字经济被重点提及,今后三年将进入快速增长期。数字经济包括了四个角度,分别是数字产业化产业数字化数字化治理和数据价值化。从根本的业绩来看机构一部手机最多能用几年?现代人对手机的依赖程度也越来越高,已经是我们必不可少的物品。现在手机更新换代的频率也越开越快了,正常使用手机的话,多久更换一款手机才算耐用呢?其实一部手机最多能用几年?这是没有一个韬光养晦!大陆资本豪掷93亿拿下半导体巨头,下个会是台积电吗?张汝京半导体领域某些方面我们中国是很强的,就好比测试封装这一块。此前被人们冠以中国半导体之父的张汝京在一次采访中谈起了国产芯片的发展现状,结合了当下的国内半导体行业的各个生产环节给