# -*- 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))