python版本的享元模式
# -*- coding:UTF-8 -*- import abc class Flyweight(metaclass=abc.ABCMeta): @abc.abstractmethod def operation(self, extrinsicstate): pass class ConcreteFlyweight(Flyweight): def operation(self, extrinsicstate): print("具体Flyweight:" + extrinsicstate) class UnsharedConcreteFlyweight(Flyweight): def operation(self, extrinsicstate): print("不共享的具体Flyweight:" + extrinsicstate) class FlyweightFactory: def __init__(self): self.flyweights = {} self.flyweights.update({"X": ConcreteFlyweight()}) self.flyweights.update({"Y": ConcreteFlyweight()}) self.flyweights.update({"Z": ConcreteFlyweight()}) def get_flyweight(self, key): return self.flyweights.get(key, None) if __name__ == "__main__": extrinsicstate = 22 f = FlyweightFactory() fx = f.get_flyweight("X") extrinsicstate -= 1 fx.operation(str(extrinsicstate)) fy = f.get_flyweight("Y") extrinsicstate -= 1 fy.operation(str(extrinsicstate)) fz = f.get_flyweight("Z") extrinsicstate -= 1 fz.operation(str(extrinsicstate)) uf = UnsharedConcreteFlyweight() extrinsicstate -= 1 uf.operation(str(extrinsicstate))