10享元模式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十讲 享元(Flyweight)模式 场景 每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了,再不用一个字一个字敲了。共享的句子就是Flyweight,MM的名字就是提取出来的外部特征,根据上下文情况使用。 享元模式概述 运用共享技术有效地支持大量细粒度的对象 FLYWEIGHT在拳击比赛中指最轻量级。享元模式大幅度的降低内存中对象的数量。 享元模式概述 享元模式概述 内蕴状态(Internal State):内蕴状态存储在享元对象内部且不会随环境改变而改变。因此内蕴状态并可以共享。 外蕴状态(External State):外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外蕴状态与内蕴状态是相互独立的。 享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来,将不可以共享的状态从类里剔除出去。 享元模式角色 享元接口(Flyweight) 具体享元(Concrete Flyweight) 享元工厂(Flyweight Factory) 客户端(Client) 享元模式的UML类图 享元模式示例 享元接口: public abstract class Charactor{ protected char letter; protected int fontsize; //显示方法 public abstract void display(); //设置字体大小 public abstract void setFontSize(int fontsize); } 享元模式示例 具体享元: //具体的字符类A public class CharactorA extends Charactor{ public CharactorA(){ this.letter = A; this.fontsize = 12; } //显示方法 public void display(){ try{ System.out.println(this.letter); }catch(Exception err){ } } //设置字体大小 public void setFontSize(int fontsize){ this.fontsize = fontsize; } } 享元模式示例 //具体的字符类B public class CharactorB extends Charactor{ //构造函数 public CharactorB(){ this.letter = B; this.fontsize = 12; } //显示方法 public void display(){ try{ System.out.println(this.letter); }catch(Exception err){ } } //设置字体大小 public void setFontSize(int fontsize){ this.fontsize = fontsize; } } 享元模式示例 享元工厂: public class CharactorFactory{ private HashtableString,Charactor charactors = new HashtableString,Charactor(); //构造函数 public CharactorFactory(){ charactors.put(A, new CharactorA()); charactors.put(B, new CharactorB()); } //获得指定字符实例 public Charactor getCharactor(String key){ Charactor charactor = (Charactor)charactors.get(key); if (charactor == nu

文档评论(0)

ajgoaw + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档