Pythonデザインパターン-フライ級
フライ級パターンは、構造デザインパターンのカテゴリに分類されます。オブジェクト数を減らす方法を提供します。これには、アプリケーション構造の改善に役立つさまざまな機能が含まれています。フライ級オブジェクトの最も重要な機能は不変です。これは、一度構築すると変更できないことを意味します。このパターンは、HashMapを使用して参照オブジェクトを格納します。
フライウェイトパターンを実装する方法は?
次のプログラムは、フライウェイトパターンの実装に役立ちます-
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()
出力
上記のプログラムは次の出力を生成します-