網站首頁 編程語言 正文
一、享元模式
享元,可理解為 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
相關推薦
- 2023-02-05 Python實現前向和反向自動微分的示例代碼_python
- 2024-03-10 Spring 非自定義Bean注解
- 2022-12-12 dos/bat中獲取用戶輸入內容的代碼(保存到文件中)_DOS/BAT
- 2022-10-02 Go底層channel實現原理及示例詳解_Golang
- 2023-03-02 C++版本基于ros將文件夾中的圖像轉換為bag包_C 語言
- 2022-09-05 淺談異常分類及異常處理機制
- 2023-01-12 Python讀取及保存mat文件的注意事項說明_python
- 2024-02-29 UNI-APP開發之插件安裝失敗,離線安裝
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支