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毫秒