首页 > 代码库 > 享元模式

享元模式

模式说明

所谓享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。

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

 

享元模式