python设计模式之Borg模式
来源:互联网 发布:2015各省医药行业数据 编辑:程序博客网 时间:2024/05/17 03:37
Borg模式
activestate上面有篇文章Singleton? We don’t need no stinkin’ singleton: the Borg design pattern, 告诉我们Borg模式要比单例模式要好。 为什么这样说:单例模式生成的单例一旦生成就一直存在,但是Borg确实和源共享的能修改
python的例子
class Config(object): _we_are_one = {} _myvalue = "" def __new__(cls, *p, **k): self = object.__new__(cls, *p, **k) self.__dict__ = cls._we_are_one return self def myvalue(self, value=None): if value: self._myvalue = value return self._myvalueif __name__ == '__main__': conf = Config() conf.myvalue("Hello") conf2 = Config() print conf2.myvalue()
不要惊讶,其实是因为在修改myvalue的时候不仅修改了conf.dict还修改了Config._we_are_one,所以…
然后还有个装饰器版本:
def borg(cls): cls._state = {} orig_init = cls.__init__ def new_init(self, *args, **kwargs): self.__dict__ = cls._state orig_init(self, *args, **kwargs) cls.__init__ = new_init return cls@borgclass TestBorg(object): def say_borg(self): print "i am borg"
0 0
- python设计模式之Borg模式
- 设计模式-单例模式-Borg-python
- python设计模式之设计模式简介
- python设计模式之状态设计模式
- python设计模式 之 简单工厂模式
- python 设计模式之 单例模式
- python设计模式之访问者模式
- python设计模式之备忘录模式
- python设计模式之对象池模式
- python设计模式之代理模式
- python设计模式之模板方法模式
- python设计模式之Null模式
- python设计模式之桥接模式
- python设计模式之组合模式
- python设计模式之责任链模式
- python设计模式之单例模式
- python设计模式之策略模式
- python设计模式之享元模式
- 哈夫曼树 之 Java详解
- spring 专业术语概述
- 二叉树的总结
- 地图定位不准问题
- iOS学习笔记连载文章一
- python设计模式之Borg模式
- 实现输出h264直播流的rtmp服务器 flash直播服务器
- php apc缓存以及与redis的对比
- iOS开发-关闭/收起键盘方法总结
- python设计模式之Builder模式
- 踏入职场的起点(连载二)
- 0x3f3f3f3f…编程中无穷大常量的设置技巧
- Android Toast工具类 解决Toast重复显示,Toast一直显示,在线程中可用
- 手机安全卫士------显示来电归属地的操作