Python设计模式 专题
您的位置:python > Python设计模式专题 > 享元设计模式
享元设计模式
作者:--    发布时间:2019-11-20

享元(flyweight)设计模式属于结构设计模式类别。 它提供了一种减少对象数的方法。 它包含各种有助于改进应用程序结构的功能。享元对象最重要的特性是不可变的。 这意味着一旦构建就不能修改它们。 该模式使用hashmap来存储引用对象。

如何实现享元(flyweight)设计模式?

以下程序演示如何实现享元模式 -

class complexgenetics(object):
   def __init__(self):
      pass

   def genes(self, gene_code):
      return "complexpatter[%s]toohugeinsize" % (gene_code)
class families(object):
   family = {}

   def __new__(cls, name, family_id):
      try:
         id = cls.family[family_id]
      except keyerror:
         id = object.__new__(cls)
         cls.family[family_id] = id
      return id

   def set_genetic_info(self, genetic_info):
      cg = complexgenetics()
      self.genetic_info = cg.genes(genetic_info)

   def get_genetic_info(self):
      return (self.genetic_info)

def test():
   data = (('a', 1, 'atag'), ('a', 2, 'aagt'), ('b', 1, 'atag'))
   family_objects = []
   for i in data:
      obj = families(i[0], i[1])
      obj.set_genetic_info(i[2])
      family_objects.append(obj)

   for i in family_objects:
      print "id = " + str(id(i))
      print i.get_genetic_info()
   print "similar id's says that they are same objects "

if __name__ == '__main__':
   test()

执行上述程序生成以下输出 -


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册