【2013.1.31】设计模式C++ 实现——Flyweight
// // // // // // // // //
///2013.1.31
// // // // // // // // //
Flyweight模式,
有一个有趣的翻译:
——蝇量模式。
【核心】将大量粒度(小的)的对象进行共性与特殊性的分离,用'提取'代替'创建'重复的部分。
UML图:
其目的非常单纯,
在程序中大量应用的重复小数据,
就像这篇文章中的文字——例如'的',
在它重复大量出现的时候,
如果每一次的实现都为其实例化一次,
将会造成大量重复的开销。
为此,
Flyweight会将这些重复的归为一类(放到一个大字典中),
在需要的时候提取出来就好了。
当然即使是拥有共性的物体也可能具有各自的特殊性:
例如'的'有以下几种形式:
的 的 的 的
都是同一个字,
但却有不同的表现形式,
这种时候,
就是UML图中的没有进行共享的那一部分:
——外部状态的设计目的了。