"""
享元模式
使用共享技術支援大量細粒度的物件
使用幾種物件就可以表示所有的物件
應用場景:物件的結構基本相同,但需要生成大量的物件
"""from abc import abcmeta, abstractmethod
class
go(object):
""" 圍棋棋子抽象基類
"""__metaclass__ = abcmeta
def__init__
(self, color):
self.color = color
pass
@abstractmethod
defplay
(self, position):
pass
class
concretego
(go):
def__init__
(self, color):
super(concretego, self).__init__(color)
defplay
(self, position):
print(self.color + "下在" + str(position) + "上")
class
factory
(object):
def__init__
(self):
self._go_dict = dict()
pass
defcreate_go
(self, color):
if color in self._go_dict:
return self._go_dict[color]
else:
self._go_dict[color] = concretego(color)
return self._go_dict[color]
defcount
(self):
print("一共有種棋子,分別是:".format(len(self._go_dict)))
for k, v in enumerate(self._go_dict):
print(v)
if __name__ == '__main__':
factory = factory()
white1 = factory.create_go("白棋")
white1.play(1)
black1 = factory.create_go("黑棋")
black1.play(2)
white2 = factory.create_go("白棋")
white3 = factory.create_go("白棋")
white4 = factory.create_go("白棋")
white2.play(3)
white3.play(4)
white4.play(5)
print("")
factory.count()
Python設計模式 享元模式
基於python3.5.2,如下 coding utf 8 class coffee name price 0 def init self,name self.name name self.price len name defshow self print coffee name s price s...
python設計模式 享元模式
享元模式定義是它使用共享物件,用來盡可能減少記憶體使用量以及分享資訊給盡可能多的相似物件 它適合用於只是因重複而導致使用無法令人接受的大量記憶體的大量物件。通常物件中的部分狀態是可以分享。常見做法是把它們放在外部資料結構,當需要使用時再將它們傳遞給享元 從享元模式定義來看,跟單例模式有相同之處,單例...
Python設計模式 享元模式
享元模式 運用共享技術有效地支援大量細粒度物件的復用。享元物件關鍵是區分內部狀態和外部狀態 內部狀態 儲存在物件內部並且不會隨著環境改變而改變的狀態 外部狀態 隨著環境改變而改變的 不可以共享的狀態,外部狀態並且有客戶端儲存,通過客戶端在需要的時候傳入到物件內部。from abc import ab...