登陆注册
8183300000093

第93章 8 如何使用享元模式

小A:“如何去使用享元模式?”

大B:“我们先从Flyweight抽象接口开始。”

public interface Flyweight

{

public void operation(ExtrinsicState state);

}

//用于本模式的抽象数据类型(自行设计)

public interface ExtrinsicState{}

大B:“接下来我们讲的是接口的具体实现(ConcreteFlyweight),并为内部状态增加内存空间,ConcreteFlyweight必须是可共享的,它保存的任何状态都必须是内部(intrinsic),也就是说,ConcreteFlyweight必须和它的应用环境场合无关。”

public class ConcreteFlyweight implements Flyweight{

private IntrinsicState state;

public void operation(ExtrinsicState state)

{

//具体操作

}

}

小A:“是不是所有的Flyweight具体实现子类都需要被共享?”

大B:“当然并不是所有的Flyweight具体实现子类都需要被共享的,所以还有另外一种不共享的ConcreteFlyweight。”

public class UnsharedConcreteFlyweight implements Flyweight{

public void operation(ExtrinsicState state){}

}

大B:“Flyweight factory负责维护一个Flyweight池(存放内部状态),当客户端请求一个共享Flyweight时,这个factory首先搜索池中是否已经有可适用的,如果有,factory只是简单返回送出这个对象,否则,创建一个新的对象,加入到池中,再返回送出这个对象池。”

public class FlyweightFactory{

//Flyweight pool

private Hashtable flyweights=new Hashtable();

public Flyweight getFlyweight(Object key){

Flyweight flyweight=(Flyweight)flyweights。get(key);

if(flyweight……null){

//产生新的。

flyweight=new ConcreteFlyweight();

flyweights。put(key,flyweight);

}

return flyweight;

}

}

大B:“到现在为止,Flyweight模式的基本框架已经就绪,我们就来看看如何调用。”

FlyweightFactory factory=new FlyweightFactory();

Flyweight fly1=factory。getFlyweight(“Fred”);

Flyweight fly2=factory。getFlyweight(“Wilma”);

……

大B:“从调用上看,好象是个纯粹的Factory使用,但奥妙就在于Factory的内部设计上。”

同类推荐
  • FlashCS动画制作基础

    FlashCS动画制作基础

    适合爱好flash动画制作的初、中级读者作为入门学习的参考书,还可以供从事网页制作与动画设计的人员参考,同时也可以作为初、中级电脑短训班的培训教材,对有一定经验的flashcs5使用者也有很高的参考价值。
  • 信息技术教育大全-操作系统大全

    信息技术教育大全-操作系统大全

    本书系统介绍说明了有关电子信息系统及操作系统等知识,希望对该信息技术有需求的读者能够从中得到帮助。
  • 创业在微软

    创业在微软

    身处软件巨擘微软之中,何来“创业”二字?本书详尽勾勒了微软亚洲工程院(ATC)的成长历程,披露了工程院人在“创业”过程中不为人知的种种酸甜苦辣,生动展现了工程院的独特文化,并从另一个角度展现了其领袖人物张宏江博士的心路历程和管理思想。
  • 纵横于天地之间——互联网络技术

    纵横于天地之间——互联网络技术

    本书告诉你:不管你是谁,只要生活在当前的时代,你一定知道电话,知道电脑,知道上网……知道许许多多关于电子、关于计算机、关于网络的话题,这就是网络时代。网络的话题可多了:它是怎么来的?什么是“蜘蛛网”?网络的过去和现在,上网的方法,如何使用网络,互联网的安全,网络有“陷阱”吗?网络有“瘾”吗?网络文化和未来又是怎样的?到书中去找答案吧!
  • 图说电子计算机

    图说电子计算机

    今天人们谈到计算机常常会把它和网络联系起来。20世纪90年代兴起的因特网其影响之广、普及之快也是大家始料未及的,也从没有一种技术能像网络一样日新月异,并迅速地改变着我们的学习和生活方式。因特网大大缩小了时空界限,为我们提供了快捷方便的交流途径。在未来10年内,计算机又将会有怎样飞速的发展呢?在互联网上进行医疗诊断、远程教学、电子商务、视频会议等活动已经实现,未来的互联网的传输速率将会提高100倍,大家可以随时随地连接到因特网上,更方便地进行交流、沟通和开展商务活动。
热门推荐
  • 超强兵王

    超强兵王

    他是猎鹰特种部队最年轻的兵王,一个特殊的任务,让他从此踏上了另外一条路,一跃成为雇佣兵界的王者,是堕落,还是龙腾九天?他背负仇恨,王者归来,华夏乃至全世界都将因他的出现而颤抖,他铁血柔情,横扫一切,他为爱执着,坚贞不移......
  • 长孙摩严

    长孙摩严

    长孙摩严的父亲因反抗月亮郡主的严苛统治,不幸被害。摩严姐弟被郡主送到国都学习。将要从国防班毕业的摩严将延续父亲的命运,回到月亮郡与阴雨联邦的边境战争中。但因为好友荆小兵惹是生非,摩严被逃出皇宫寻求自由的国主视为救命稻草。在国主的恳求下,摩严答应帮助他逃出都城。逃亡过程中,国主逐渐对摩严姐弟的身世有了了解,于是萌生出到月亮郡的愿望。几经波折,国主获得太后和辅臣的允许后,终于能够无牵无挂地踏上深入民间的旅程。摩严姐弟再次被国主邀请同行,对月亮郡主恨之入骨的摩严积极同行。成功到达月亮郡以后,摩严和国主、月亮郡主之间的复杂矛盾被激发出来。战争因为国主的亲临而升级,郡主的统治因为国主的出现而受到阻碍
  • 我的贴身老板娘

    我的贴身老板娘

    身怀绝技的少年陈贾被轰出家门,为生计混迹于厨房当杂役,直到某一天深夜,娇美的老板娘让他去她家一趟……
  • 请离我远一点再远一点

    请离我远一点再远一点

    五个小故事,不同的决定改变自己的结局,女主是否能在各种诱惑之下保持初心
  • 设计天王

    设计天王

    “他是设计界的天王巨星。”“也是全球最知名的设计馆馆主。”“退可与大妈嬉笑,进可俘少女芳心。”“是设计师,也是普普通通小市民。”“设计了一个拳套,佩戴者攻击力量x2”“设计了一串项链,个人专属气质+10”“设计了一双跑鞋,速度提升10%”获得产品奇妙化能力的顾歌立下志向,莫名其妙的大明星女友,从天而降的设计馆……就这样,平凡的顾歌走上了平平无奇的设计之路……此书又名【我真不想当设计界的天王】【奇妙师的日常生活】【奇妙设计师】【带领华夏设计界走在前沿】【我就是一个正直的设计师而已】【我有一座设计馆】
  • 锦本良仙

    锦本良仙

    别人是穿过来来爱你,年素锦却是夹带着血海深仇!救了一只小鸟,惹了一个心眼小的大家族。为了一丝仙缘,缠了一个修仙高富帅。仇人相见,只有年素锦眼红!相逢不相识,这样更好背后下手!你不是要成仙成圣么?看我拆你圣骨,断你仙缘!只是这个高富帅似乎反应忒迟钝了点,说不得要下狠手,该推到推倒,吃完拍拍屁股一叉腰:“修这样的仙,挺好!“
  • 剑气倒海

    剑气倒海

    农家小伙天赋异禀,修行是为行侠仗义,路见不平拔剑相助,哪里不平哪有我!
  • 幸运与厄运之虚拟游戏

    幸运与厄运之虚拟游戏

    众人,在系统提示的情况下,纷纷说道:“流星雨出现了,我们快点准备许愿吧!”而李云飞在人群中收到了别一条提示:“厄运事件触发”这是时候他轻车熟路开启技能的奔跑起来,在没有人看到的情况下……当所有队友和敌人都死光后,李云飞一个人活在……
  • 止到夏天恋木杨

    止到夏天恋木杨

    夏天似乎是很多人的回忆,也是很多人的开始
  • 卡斯比亚之恋

    卡斯比亚之恋

    弟弟?哼那种世俗的称呼不过是个有名无实的东西罢了!他只知道——他喜欢她,而且从小就坚定不移了!