首页 > 代码库 > 享元模式
享元模式
模式说明
所谓享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。
FlyweightFactory内定义的实体是不变的(共享的),传入参数是状态变化。
缓存形式,传入参数已经被缓存则直接返回,否则创建参数对应实体,放入缓存并返回该新实体
模式结构图
程序示例
说明:一个图形类,原型派生类;颜色状态变化;享元工厂;
代码:
class Shape(object): def __init__(self,color): self._color = color def draw(self): print ‘color:%s shape:%s‘%(self._color,self.__class__.__name__)class Circle(Shape): passclass FlyweightFactory(object): def __init__(self): self._shapes = {} def getshape(self,color): if color in self._shapes.keys(): return self._shapes[color] else: temp = Circle(color) self._shapes[color]=temp return temp def getcount(self): print len(self._shapes.keys())if __name__==‘__main__‘: factory = FlyweightFactory() shape = factory.getshape(‘red‘) shape.draw() shape = factory.getshape(‘black‘) shape.draw() shape = factory.getshape(‘red‘) shape.draw() factory.getcount()
运行结果:
参考来源:
http://www.cnblogs.com/chenssy/p/3679190.html
http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html
http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html
享元模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。