国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python設(shè)計模式之享元模式原理與用法實例分析

2020-02-16 00:35:36
字體:
供稿:網(wǎng)友

本文實例講述了Python設(shè)計模式之享元模式原理與用法。分享給大家供大家參考,具體如下:

享元模式(Flyweight Pattern):運用共享技術(shù)有效地支持大量細(xì)粒度的對象.

下面是一個享元模式的demo:

#!/usr/bin/env python# -*- coding:utf-8 -*-__author__ = 'Andy'"""大話設(shè)計模式設(shè)計模式——享元模式享元模式(Flyweight Pattern):運用共享技術(shù)有效地支持大量細(xì)粒度的對象對一個類進(jìn)行的實例,只在第一次使用時建立,其他時候是用同一個實例,減少內(nèi)存的開銷"""# 抽象網(wǎng)站類class Website(object):  def use(self):    pass# 具體網(wǎng)站類class ConcreteWebsite(Website):  def __init__(self, name):    self.name = name  def use(self):    print "網(wǎng)站分類",self.name# 不共享的網(wǎng)站類class UnshareConcreteWebsite(Website):  def __init__(self, name):    self.name = name  def use(self):    print "不共享網(wǎng)站分類",self.name# 網(wǎng)站工廠class WebsiteFactory(object):  def __init__(self):    self.hashtable = dict()  # 獲取網(wǎng)站類 如果存在直接返回,如果不存在建好之后返回  def get_website(self, key):    if not key in self.hashtable:      self.hashtable[key] = ConcreteWebsite(key)    return self.hashtable[key]  # 網(wǎng)站實例的個數(shù)  def get_website_count(self):    return len(self.hashtable.keys())if __name__ == "__main__":  factory = WebsiteFactory()  f1 = factory.get_website("blog")  f2 = factory.get_website("blog")  f3 = factory.get_website("blog")  f4 = factory.get_website("website")  f5 = factory.get_website("website")  f6 = factory.get_website("website")  f7 = UnshareConcreteWebsite("test")  f1.use()  f2.use()  f3.use()  f4.use()  f5.use()  f6.use()  f7.use()

運行結(jié)果:

上面類的設(shè)計如下圖:

 

享元模式可以避免大量非常相似類的開銷,在程序設(shè)計中,有時會生成大量細(xì)粒度的類實例來表示數(shù)據(jù),如果這些實例除了幾個參數(shù)外基本相同,就可以把參數(shù)已到實例外面,在方法調(diào)用時,把它們傳進(jìn)來,就可以通過共享大幅度減少單個實例的數(shù)目

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》

希望本文所述對大家Python程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 和政县| 通道| 望奎县| 平顶山市| 惠安县| 千阳县| 依兰县| 冀州市| 修文县| 松阳县| 南溪县| 永和县| 凤阳县| 安溪县| 太湖县| 阳高县| 米泉市| 安化县| 申扎县| 巫溪县| 松潘县| 南昌市| 博野县| 中方县| 永昌县| 皮山县| 遂川县| 丘北县| 洞口县| 三亚市| 金溪县| 合水县| 盐池县| 晋中市| 阿克陶县| 仪征市| 白山市| 道孚县| 澎湖县| 安阳县| 隆昌县|