首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计形式(c++)笔记之十(Flyweight模式)

2013-10-24 
设计模式(c++)笔记之十(Flyweight模式)一、描述设计模式中的享元模式,避免大量拥有相同内容的小类的开销(如

设计模式(c++)笔记之十(Flyweight模式)
一、描述


      设计模式中的享元模式,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类).


问题


      在面向对象系统的设计何实现中,创建对象是最为常见的操作。这里面就有一个问题:如果一个应用程序使用了太多的对象,就会造成很大的存储开销。特别是对于大量轻量级(细粒度)的对象,比如在文档编辑器的设计过程中,我们如果为没有字母创建一个对象的话,系统可能会因为大量的对象而造成存储开销的浪费。例如一个字母“a”在文档中出现了100000 次,而实际上我们可以让这一万个字母“a”共享一个对象,当然因为在不同的位置可能字母“a”有不同的显示效果(例如字体和大小等设置不同),在这种情况我们可以为将对象的状态分为“外部状态”和“内部状态”,将可以被共享(不会变化)的状态作为内部状态存储在对象中,而外部对象(例如上面提到的字体、大小等)我们可以在适当的时候将外部对象最为参数传递给对象(例如在显示的时候,将字体、大小等信息传递给对象)。 





本人的工程目录:


      设计形式(c++)笔记之十(Flyweight模式)


注释:

main:客户程序员(Client)

FlyweightFactory:“仓库”(对象池), 

Flyweight:对象池中的对象

ConcreteFlyweight:被共享的对象


代码:

仓库”(对象池):FlyweightFactory类

FlyweightFactory.h

设计形式(c++)笔记之十(Flyweight模式)

参考文献:《GoF_23种设计模式解析》

热点排行