文档章节

Pattern Borg vs Singleton

EdwardLi
 EdwardLi
发布于 2013/02/01 13:10
字数 204
阅读 44
收藏 0

Singleton Sample:

http://en.wikipedia.org/wiki/Singleton_pattern

特性:

  1. instance全局唯一

  2. 通过getInstance作为该instantce唯一接口

该模式的不足:

  1. 内存泄露问题,由于使用静态变量,会和全局变量放在内存的static区域,程序结束之后才释放。

  2. 多个实例的情况无法支持

  3. 由于无法被重写,不易于扩展

在python中结合动态语言特性,Borg模式很好的解决了这个问题,做到类的实例共享一组变量(dict), 可以被重载。内存泄露情况依然存在。

Borg:

class Borg:   

__shared_state ={}

def __init__(self):

    # the different instance's __dict__ point to __shared_state

    self.__dict__ =self.__shared_state

Borg模式在大多动态语言中都可以做到很方便的实现。

参考:

  1. http://mitnk.com/94/singleton_design_pattern_in_python/

  2. http://en.wikipedia.org/wiki/Singleton_pattern

  3. http://www.linuxidc.com/Linux/2012-06/63171.htm

© 著作权归作者所有

下一篇: Bridge Pattern
EdwardLi
粉丝 3
博文 46
码字总数 8795
作品 0
海淀
高级程序员
私信 提问
Python单例模式的4种实现方法

#-- encoding=utf-8 -- print '----------------------方法1--------------------------' #方法1,实现new方法 #并在将一个类的实例绑定到类变量_instance上, #如果cls._instance为None说明该......

浮云飘飘
2015/12/19
10
0
Thinking in Patterns #1: The pattern concept

Thinking in Patterns 1: The pattern concept What is a pattern? Initially, you can think of a pattern as an especially clever and insightfulway of solving a particular class of p......

LuXing
2014/06/10
65
0
C++完美实现Singleton模式

Singleton模式是常用的设计模式之一,但是要实现一个真正实用的设计模式却也不是件容易的事情。 1. 标准的实现 class Singleton { public: static Singleton * Instance() { if( 0== _insta...

berryz2007
2010/12/12
0
0
Python 中 Singleton 的写法及其拓展

为何要有 Singleton ? 重要性无需多言,我们在项目中经常有「要一个进程全局的变量(内存块)」的需求,而且单例模式是几种设计模式中最容易的。 偷懒且有用的做法:模块级别常量 我经常使用...

hezhiming
2018/01/21
0
0
Qt 下 Singleton 模式小记

The Singleton pattern restricts a class so that only one instance can be created. This can be accomplished by making its constructor private or protected and providing an instan......

晨曦之光
2012/05/08
308
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins World 贡献者峰会及专家答疑展位

本文首发于:Jenkins 中文社区 原文链接 作者:Marky Jackson 译者:shunw Jenkins World 贡献者峰会及专家答疑展位 本文为 Jenkins World 贡献者峰会活动期间的记录 Jenkins 15周岁啦!Jen...

Jenkins中文社区
24分钟前
6
0
杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。 然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为...

liululee
38分钟前
6
0
OSChina 周二乱弹 —— 我等饭呢,你是不是来错食堂了?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 自行车丢了:给主编推荐首歌 《クリスマスの夜》- 岡村孝子 手机党少年们想听歌,请使劲儿戳(这里) @烽火燎原 :国庆快来,我需要长假! ...

小小编辑
今天
409
9
玩转 Springboot 2 之热部署(DevTools)

Devtools 介绍 SpringBoot 提供了热部署的功能,那啥是热部署累?SpringBoot官方是这样说的:只要类路径上的文件发生更改,就会自动重新启动应用程序。在IDE中工作时,这可能是一个有用的功能...

桌前明月
今天
5
0
CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部