• 设计模式之享元模式


    from abc import ABCMeta, abstractmethod
    
    
    # 运用共享技术有效地支持大量细粒度对象的复用,类似于对象池模式,不过对象池是为了节省对象不断创建销毁的时间,
    # 享元模式是为了防止重复创建相似或相同的对象,导致内存泄漏
    # 两个主要角色:享元对象、享元工厂
    class Flyweight(metaclass=ABCMeta):
        """享元类"""
        @abstractmethod
        def operation(self, extrinsicState):
            pass
    
    
    class FlyweightImpl(Flyweight):
        """享元模式的具体实现类"""
        def __init__(self, color):
            self.__color = color
    
        def operation(self, extrinsicState):
            print("%s取得%s色颜料" %(extrinsicState, self.__color))
    
    
    class FlyweightFactory:
        """享元工厂"""
        def __init__(self):
            self.__flyweights = {}
    
        def getFlyweight(self, key):
            pigment = self.__flyweights.get(key, FlyweightImpl(key))
            return pigment
    
    
    def testFlywieght():
        factory = FlyweightFactory()
        pigmentRed = factory.getFlyweight("")
        pigmentRed.operation("梦之队")
        pigmentBlue = factory.getFlyweight("")
        pigmentBlue.operation("梦之队")
        pigmentBlue1 = factory.getFlyweight("")
        pigmentBlue1.operation("和平队")
    
    
    testFlywieght()
  • 相关阅读:
    mybatis的缓存机制
    mybatis动态SQL
    mybatis关联集合List&分布查询传递多列值
    winrt获取文件MD5码
    在wpf中使用winrt的Toast弹框效果
    winrt控件
    WdatePicker组件不显示
    Thread.Sleep in WinRT
    google 语音api
    UTF8编码转换(C#)
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/13122089.html
Copyright © 2020-2023  润新知