重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文实例讲述了Python设计模式之享元模式原理与用法。分享给大家供大家参考,具体如下:
创新互联专注于王益企业网站建设,成都响应式网站建设,商城网站建设。王益网站建设公司,为王益等地区提供建站服务。全流程定制设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象.
下面是一个享元模式的demo:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话设计模式 设计模式——享元模式 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象 对一个类进行的实例,只在第一次使用时建立,其他时候是用同一个实例,减少内存的开销 """ # 抽象网站类 class Website(object): def use(self): pass # 具体网站类 class ConcreteWebsite(Website): def __init__(self, name): self.name = name def use(self): print "网站分类",self.name # 不共享的网站类 class UnshareConcreteWebsite(Website): def __init__(self, name): self.name = name def use(self): print "不共享网站分类",self.name # 网站工厂 class WebsiteFactory(object): def __init__(self): self.hashtable = dict() # 获取网站类 如果存在直接返回,如果不存在建好之后返回 def get_website(self, key): if not key in self.hashtable: self.hashtable[key] = ConcreteWebsite(key) return self.hashtable[key] # 网站实例的个数 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()