Flyweight(享元) — 对象结构型模式
使用共享技术有效地支持大量细粒度的对象。
适用场景
- 一个应用程序使用了大量的重复对象。
- 完全由于使用大量的对象造成很大的存储开销。
- 对象的大多数状态都可变为外部状态。
UML 图
效果
- 节省一些空间
实现
class Character(object):
def __init__(self, x):
self.c = x
def print(self):
print(self.c, end='')
class CharacterFactory(object):
save = {}
@classmethod
def 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
"""