Python設計模式 三 共享模式

2021-07-22 02:02:49 字數 1106 閱讀 1143

# 共享模式

class

borg:

"""共享狀態"""

__shared_state = {}

def__init__

(self):

self.__dict__ = self.__shared_state

self.state = '初始化'

"""當你列印乙個類的時候,那麼print首先呼叫的就是類裡面的定義的__str__"""

"""當列印borg的乙個例項的時候,__str__函式被呼叫到"""

def__str__

(self):

return self.state

class

yourborg

(borg):

"""python pass是空語句,是為了保持程式結構的完整性。

pass 不做任何事情,一般用做佔位語句。"""

pass

if __name__ == '__main__':

rm1 = borg()

rm2 = borg()

rm1.state = '空閒的'

rm2.state = '執行中的'

print('rm1: '.format(rm1))

print('rm2: '.format(rm2))

"""改變(共享的)狀態"""

rm2.state = '殭屍'

print('rm1: '.format(rm1))

print('rm2: '.format(rm2))

print('rm1 id: '.format(id(rm1)))

print('rm2 id: '.format(id(rm2)))

"""初始化(共享的)狀態"""

設計模式 共享模式

看了果凍兄的部落格,發現大家對裡面的乙個實現有一些不同的見解,貼出來記錄一下,其博文如下 共享模式的主要想法就是 運用共享技術有效地支援大量細粒度的物件。所以應該將物件的外部特徵由更高一級的物件來管理。在原文中,博主將棋子的外部特徵 座標 作為了棋子的乙個屬性來管理,又在棋盤類中採用覆蓋的方法來每一...

設計模式 共享模式

一 共享模式 共享模式 運用共享技術有效的支援大量細粒度的物件 flyweigth類,具有所有享元類的超類或介面 abstract class flyweigth concreteflyweigth是繼承flyweigth超累或實現介面,並為內部狀態增加儲存空間 class concreteflyw...

設計模式 三 裝飾模式

動態地給乙個物件新增一些額外的職責 不重要的功能,只是偶然一次要執行 就增加功能來說,裝飾模式比生成子類更為靈活。建造過程不穩定,按正確的順序串聯起來進行控制。good 當你向舊的類中新增新 時,一般是為了新增核心職責或主要行為。而當需要加入的僅僅是一些特定情況下才會執行的特定的功能時 簡單點就是不...