Python設計模式 享元模式

2021-10-23 06:37:34 字數 1588 閱讀 1233

享元模式:運用共享技術有效地支援大量細粒度物件的復用。

享元物件關鍵是區分內部狀態和外部狀態:

內部狀態:儲存在物件內部並且不會隨著環境改變而改變的狀態

外部狀態:隨著環境改變而改變的、不可以共享的狀態,外部狀態並且有客戶端儲存,通過客戶端在需要的時候傳入到物件內部。

from abc import abcmeta,abstractmethod

import logging

class

pigment

:def

__init__

(self,color)

: self.__color = color

self.__user =

""def

getcolor

(self)

:return self.__color

defsetuser

(self,user)

: self.__user = user

return self;

defshowinfo

(self)

:print

("%s 取得 %s色顏料"

%(self.__user,self.__color)

)class

pigmengfactory

:def

__init__

(self)

: self.__sigmentset=

defgetpigment

(self,color)

: pigment = self.__sigmentset.get(color)

if pigment is

none

: logging.error(

"沒有%s的顏料"

,color)

else

:return pigment

deftest()

: factory = pigmengfactory(

) red = factory.getpigment(

"紅")

.setuser(

"a隊"

) red.showinfo(

) factory = pigmengfactory(

) red = factory.getpigment(

"藍")

.setuser(

"b隊"

) red.showinfo(

) factory = pigmengfactory(

) red = factory.getpigment(

"黃")

.setuser(

"c隊"

) red.showinfo(

)test(

)

執行結果:

a隊 取得 紅色顏料

b隊 取得 藍色顏料

c隊 取得 黃色顏料

aaa

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設計模式 享元模式

享元模式定義是它使用共享物件,用來盡可能減少記憶體使用量以及分享資訊給盡可能多的相似物件 它適合用於只是因重複而導致使用無法令人接受的大量記憶體的大量物件。通常物件中的部分狀態是可以分享。常見做法是把它們放在外部資料結構,當需要使用時再將它們傳遞給享元 從享元模式定義來看,跟單例模式有相同之處,單例...

設計模式(享元模式)

享元模式是設計模式中少數幾個已提高系統效能為目的模式之一。它的核心思想是 如果系統存在多個 相同的物件,那麼只需要共享一分物件的拷貝,而不必為每一次使用都建立新的物件。當有物件被大量復用時,特別是重量級的物件復用可以使用享元模式來提高系統效能。其優點如下 1.可以節省重複建立物件的開銷,因為被享元模...