本文实例讲述了python单例模式。分享给大家供大家参考。具体分析如下:

__new__()在__init__()之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。单例模式是指创建唯一对象,单例模式设计的类只能实例化1个对象。

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

从具体实现角度来说,就是以下三点:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的共有的函数用于创建或获取它本身的静态私有对象。

在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。

一些资源管理器常常设计成单例模式。

在计算机系统中,需要管理的资源包括软件外部资源,譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,

以避免两个打印作业同时输出到打印机中。每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情况。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。

需要管理的资源包括软件内部资源,譬如,大多数的软件都有一个(甚至多个)属性(properties)文件存放系统配置。这样的系统应当由一个对象来管理一个属性文件。

需要管理的软件内部资源也包括譬如负责记录网站来访人数的部件,记录软件系统内部事件、出错信息的部件,或是对系统的表现进行检查的部件等。这些部件都必须集中管理,不可政出多头。

这些资源管理器构件必须只有一个实例,这是其一;它们必须自行初始化,这是其二;允许整个系统访问自己这是其三。因此,它们都满足单例模式的条件,是单例模式的应用。

优点:

一、实例控制

单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

二、灵活性

因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点:

一、开销

虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。

二、可能的开发混淆

使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

三、对象生存期

不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C++),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

python单例模式例子_python单例模式实例分析相关推荐

  1. python中property函数_python 邮件表格Python中property函数用法实例分析

    本文实例讲述了Python中property函数用法.分享给大家供大家参考,具体如下: 通常我们在访问和赋值属性的时候,都是在直接和类(实例的)的__dict__打交道,或者跟数据描述符等在打交道.但 ...

  2. python索引例子_Python实现带下标索引的遍历操作示例

    本文实例讲述了Python实现带下标索引的遍历操作.分享给大家供大家参考,具体如下: 代码如下: #coding=utf-8 #python - 实现带下标索引的遍历. str = 'abcdefgh ...

  3. Python调用kafka构建完整实例分析与应用!

    近期遇到一个需求就是我们需要把当前比较耗费资源的接口开发成异步通讯的机制,简单来说就是有一个消息队列来不停地进行消息的集中分发与任务处理,这里应用端给出的方案是使用kafka来做,但是这个我在之前没有 ...

  4. windows下kafka环境完整搭建,Python调用kafka构建完整实例分析与应用

    今天临近下班的时候来了一个需求就是我们需要把当前比较耗费资源的接口开发成异步通讯的机制,简单来说就是有一个消息队列来不停地进行消息的集中分发与任务处理,这里应用端给出的方案是使用kafka来做,但是这 ...

  5. python单例_Python单例模式

    所谓单例,是指一个类的实例从始至终只能被创建一次,,而且自行实例化并向整个系统提供这个实例. 方法1 如果想使得某个类从始至终最多只有一个实例,使用__new__方法会很简单.Python中类是通过_ ...

  6. python单例_python 单例模式

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  7. python单例_Python - 单例模式(Singleton)

    单例模式(Singleton) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/23374575 单例模式 , 类的实例从始至终, ...

  8. python脚本例子_python dict 字典 以及 赋值 引用的一些实例(详解)

    最近在做一个很大的数据库方面的东东,要用到根据数值来查找,于是想到了python中的字典,平时没用过dict这个东东 用的最多的还是 list 和 tuple (网上查 用法一大堆) 看了一下创建字典 ...

  9. python数学计算例子_Python OpenCV实例:直方图计算(数学公式简单实现)

    #coding:utf-8 ''' 直方图 ''' import cv2 import numpy as np import matplotlib.pyplot as plt ''' 计算RGB图像每 ...

  10. 写python脚本管理_Python 文件管理实例详解

    本文实例讲述了Python 文件管理的方法.分享给大家供大家参考,具体如下: 一.Python中的文件管理 文件管理是很多应用程序的基本功能和重要组成部分.Python可以使文件管理极其简单,特别是和 ...

最新文章

  1. 编写自己的Shell解释器-3[转]
  2. merge规则 python_30个Python极简代码,10分钟get常用技巧
  3. iometer-2006_07_27.common-src编译
  4. Hive数据类型及文本文件数据编码
  5. Android之Content和activity、service、Application关系和attachBaseContext函数调用的时候
  6. Android之图片缓存管理
  7. Java EE 7 / JAX-RS 2.0:具有自定义HTTP标头的简单REST API身份验证和授权
  8. Go条件语句、switch和循环语句
  9. 教师新学年工作愿景_新学年的3个创新开源项目
  10. 5.3命名socket
  11. python自学行吗-零基础可以学会python吗?python好学吗?
  12. android 汉字笔画拆写,汉字笔画顺序之重新开启
  13. java爬取百度图片
  14. 韩顺平循序渐进学java坦克大战爆炸图
  15. 【OpenCV】尺寸测量
  16. 通过hutool工具包实现将数据库中的全量数据导出,一张表一个sheet页,包含目录页,目录页和sheet页之间可以互相跳转
  17. 基于TLC5615芯片的DDS信号发生器(FPGA)
  18. 《第五项修炼》读后感
  19. jmeter线程组之jp@gc - Ultimate Thread Group
  20. 任务栏创建返回桌面快捷图标

热门文章

  1. 小米手机计算机连接设置方法,小米手机怎么连接电脑并上网?小米手机USB共享上网方法详细图解...
  2. Python代码加密 - 4种方案
  3. 关卡七、家庭收支记账系统
  4. 详解舵机的基本原理以及控制方法
  5. opencv mat与cvmat, iplimage转换
  6. Mysql读写分离的原理及配置--amoeba
  7. unity3d利用pano2VR实现全景视图效果
  8. java cobar_alibaba的COBAR真是强大.
  9. 第2章 业务:数据驱动运营
  10. 电子电路基础 (11)——反馈、偏置与多级放大电路原理分析