码迷,mamicode.com
首页 > 其他好文 > 详细

享元模式

时间:2014-08-25 16:39:04      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   ar   2014   div   代码   

模式说明

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

FlyweightFactory内定义的实体是不变的(共享的),传入参数是状态变化。

缓存形式,传入参数已经被缓存则直接返回,否则创建参数对应实体,放入缓存并返回该新实体

模式结构图

bubuko.com,布布扣

程序示例

说明:一个图形类,原型派生类;颜色状态变化;享元工厂;

代码:

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

运行结果:

bubuko.com,布布扣

参考来源:

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

 

享元模式

标签:style   blog   http   color   使用   ar   2014   div   代码   

原文地址:http://www.cnblogs.com/wang-shuai/p/3935020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!