Flyweight(享元) — 对象结构型模式
使用共享技术有效地支持大量细粒度的对象。
适用场景
- 一个应用程序使用了大量的重复对象。
- 完全由于使用大量的对象造成很大的存储开销。
- 对象的大多数状态都可变为外部状态。
UML 图
效果
- 节省一些空间
实现
class Character(object):def __init__(self, x):self.c = xdef print(self):print(self.c, end='')class CharacterFactory(object):save = {
}@classmethoddef getCharacter(cls, x):if x in cls.save:return cls.save[x]else:cls.save[x] = Character(x)return cls.save[x]
client
if __name__ == "__main__":s = "abcaaaaaaaaaaabcsccccccsbb"small_s = []for c in s:small_s.append(CharacterFactory.getCharacter(c))for c in small_s:c.print()"""output: abcaaaaaaaaaaabcsccccccsbb """