我跑我跑我跑
网上原文如下:
11、FLYWEIGHT—每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了,再不用一个字一个字敲了。共享的句子就是Flyweight,MM的名字就是提取出来的外部特征,根据上下文情况使用。
享元模式:FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来,将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象,而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。
点评:
这个例子真是形象啊。Mm好像都是很喜欢发短信的,sigh。记得以前有同学一星期能够发1500条!由此可见一斑阿。当然了,更为重要的是,发的短信很多都是一样的,或者说基本是一样的。而且这些都是比较小的,属于小颗粒对象,因此我们可以直接把这些给存起来,用的时候就可以直接取出来发了,不用再重新new了,呵呵。不过上面说mm的名字是外部特征,这个我有点不明白。我觉得应该是碰到的各种情况是外部特征吧。比如说做错事了要想mm发道歉短信;早上发早上好短信;晚上发晚安短信。。。当然了,如果lz有n多mm的话,也是可以考虑成外部特征的,mm1喜欢什么什么,mm2喜欢什么什么。。。也是一个选择阿,具体看情况了。Over。