Programming 版 (精华区)

发信人: Sun (大灯泡), 信区: SoftEng
标  题: [Design Pattern] Flyweight
发信站: 哈工大紫丁香 (2001年04月13日16:48:37 星期五), 站内信件

发信人:Crystal_Y (小衲)  版面名称:SoftEng(1080)
标 题:[Design Pattern] Flyweight
发信站:中国科大BBS站 (Fri, 13 Apr 2001 13:09:47 )
标 记:精华


  Flyweight的目的是共享

  一个应用可能要操纵很多对象,由于数量太大导致存储代价很高,而这些对象
的大部分状态其实都可以由外界确定,并且应用本身不依赖于对象的唯一性,那么
就可以用用Flyweight了。 

  一个Flyweight对象的state必然包括内部intrinsic和extrinsic两种,内部
状态与使用这个对象的client无关,独立的,反之外部状态则是client提供给
这个对象的,两种信息加在一起才可以完整地实现这个对象的功能。
  
  一个FlyweightFactory负责维护系统中的所有Flyweight对象,加入删除等等,
更重要地是实现共享,当client通过这个Factory要求创建一个对象(或第一次
引用某一个对象类型)的时候,Factory要么创建一个新的Flyweight,要么返回一个
已经存在的Flyweight。得到一个对象的引用后,client把它需要的外部状态传递
给这个flyweight,外部状态可能是计算得到的(这进一步减少了存储代价)。
  
  我认为Flyweight的关键就是能够识别出一个对象的内部和外部状态,实际上
这是一个普遍的问题,即class数据成员的范围确定问题,是一个minimal集合,
还是一个monolithic现象(如God class这样的东东)
 
  而设计一个component的时候,是严格按照它的requirement specification来的,
component与object有些什么区别呢?
 

--
※ 来源: 中国科大BBS站 [bbs.ustc.edu.cn]



--
    太阳当空照,灯泡呵呵笑,
    mm说,早上好,你为什么又不理我了?
    我要做光光,光光没烦恼,
    高高跳,大声叫,光光的乐趣你们不知道!

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:11.993毫秒