日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python設計模式結構型享元模式_python

更新時間: 2022-04-20 編程語言

一、享元模式

享元,可理解為 Python 中的元類、最小粒度的類,系統中存在大量的相似對象時,可以選擇享元模式提高資源利用率。

享元具有兩種狀態:

內蘊狀態:存儲在享元內部,不會隨環境的改變而有所不同,是可以共享的。
外蘊狀態:是不可以共享的,它隨環境的改變而改變的,因此外蘊狀態是由客戶端來保持(因為環境的變化是由客戶端引起的)。

二、應用場景

如果一個應用程序使用了大量的對象,而這些對象造成了很大的存儲開銷的時候就可以考慮是否可以使用享元模式。

例如:如果發現某個對象的生成了大量細粒度的實例,并且這些實例除了幾個參數外基本是相同的,如果把那些共享參數移到類外面,在方法調用時將他們傳遞進來,就可以通過共享大幅度單個實例的數目。

三、代碼示例

class FlyweightBase:
? ? """享元基類"""
? ? def offer(self):
? ? ? ? pass


class Flyweight(FlyweightBase):
? ? """共享享元類"""
? ? def __init__(self, name):
? ? ? ? self.name = name

? ? def get_price(self, price):
? ? ? ? print('產品類型:{} 詳情:{}'.format(self.name, price))


class FactoryFlyweight:
? ? """享元工廠類"""
? ? def __init__(self):
? ? ? ? self.product = {}

? ? def Getproduct(self, key):
? ? ? ? if not self.product.get(key, None):
? ? ? ? ? ? self.product[key] = Flyweight(key)
? ? ? ? return self.product[key]


if __name__ == '__main__':
? ? test = FactoryFlyweight()
? ? A = test.Getproduct("高端")
? ? A.get_price("香水:80")
? ? B = test.Getproduct("高端")
? ? B.get_price("面膜:800")

原文鏈接:https://is-cloud.blog.csdn.net/article/details/122934432

欄目分類
最近更新