享元模式:運用共享技術有效地支援大量細粒度的物件。
享元模式和單例模式類似的地方。共通的思路,就是同一類物件之建立乙個例項,享元模式在此基礎上進一步加工。利用工廠模式來返回需要的物件。
from abc import abcmeta, abstractmethod
class
website
(metaclass=abcmeta)
:def
__init__
(self, name)
: self.name = name
@abstractmethod
defuse(self, user)
:pass
class
concretewebsite
(website)
:def
__init__
(self, name)
:super()
.__init__(name)
defuse
(self, user)
:print
(" uses "
.format
(user.name, self.name)
)class
user
:def
__init__
(self, name)
: self.__name = name
@property
defname
(self)
:return self.__name
@name.setter
defname
(self, value)
: self.__name = value
class
websitefactory
:def
__init__
(self)
: self.website =
defget_website
(self, website_type)
:if website_type not
in self.website.keys():
self.website[website_type]
= concretewebsite(website_type)
return self.website[website_type]
if __name__ ==
"__main__"
: user = user(
"li"
) web_factory = websitefactory(
) website = web_factory.get_website(
"blog"
) website.use(user)
user.name =
"wang"
website = web_factory.get_website(
"production demonstration"
) website.use(user
設計模式十五 享元模式
享元模式定義 運用共享技術有效地支援大量細粒度地物件。初步理解 的共享,不同的使用者使用時,存在不同的資料,因此在呼叫方法時傳入封裝使用者資訊的物件即可。code 每件體育用品的功能是相同的,因此體育用品是共享的,但是使用體育用品的人是不一樣的。體育用品的基類 public inte ce shar...
設計模式之享元模式
1 享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 2 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。3 思考 為什麼要有unsh...
設計模式之 享元模式
享元模式英文稱為 flyweight pattern 又譯為羽量級模式或者蠅量級模式。享元模式的定義為 採用乙個共享類來避免大量擁有相同內容的 小類 的開銷。這種開銷中最常見 直觀的影響就是增加了記憶體的損耗。享元模式以共享的方式高效的支援大量的細粒度物件,減少其帶來的開銷。在名字和定義中都體現出了...