享元模式:運用共享技術有效地支援大量細粒度物件的復用。
享元物件關鍵是區分內部狀態和外部狀態:
內部狀態:儲存在物件內部並且不會隨著環境改變而改變的狀態
外部狀態:隨著環境改變而改變的、不可以共享的狀態,外部狀態並且有客戶端儲存,通過客戶端在需要的時候傳入到物件內部。
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.可以節省重複建立物件的開銷,因為被享元模...