享元模式

模式说明

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

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):

    pass



class 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

 

你可能感兴趣的:(享元模式)