python中实现Single模式

原创 2006年05月26日 09:40:00

#!/usr/bin/env python

#-*- coding:utf-8 -*-

 

class Singleton:

       """ A python singleton """

 

       class __impl:

              """ Implementation of the singleton interface """

 

       def spam(self):

              """ Test method, return singleton id """

              return id(Singleton.__instance)

 

       # storage for the instance reference

       __instance = None

 

       def __init__(self):

              """ Create singleton instance """

              # Check whether we already have an instance

              if Singleton.__instance is None:

                     # Create and remember instance

                     Singleton.__instance = Singleton.__impl()

              # Store instance reference as the only member in the handle

              self.__dict__['_Singleton__instance'] = Singleton.__instance

 

       def __getattr__(self, attr):

              """ Delegate access to implementation """

              return getattr(self.__instance, attr)

 

       def __setattr__(self, attr, value):

              """ Delegate access to implementation """

              return setattr(self.__instance, attr, value)

 

class SingletonType(type):

       """Singleton Metaclass"""

 

       def __init__(cls, name, bases, dic):

              super(SingletonType, cls).__init__(name, bases, dic)

              cls.instance = None

 

       def __call__(cls, *args, **kwargs):

              if cls.instance is None:

                     cls.instance = super(SingletonType, cls).__call__(*args, **kwargs)

              return cls.instance

      

class MyClass:

       __metaclass__ = SingletonType

      

 

if __name__ == '__main__':

       #print dir(MyClass)

       ob1 = MyClass()

       ob2 = MyClass()

       print id(ob1), id(ob2)

      

       #print dir(Singleton)

       s1 = Singleton()

       s2 = Singleton()

       print id(s1), s1.spam()

       print id(s2), s2.spam()

单件模式(Single Pattern)

  • 2011年07月20日 14:56
  • 9KB
  • 下载

LINUX启动进入SINGLE模式

一、单用户模式;          单用户模式要求我们输入root用户的密码,否则您无法登录单用户模式;如果您丢失了root用户的密码,并不能用单用户模式来重设您的root密码;  ...
  • zxs9999
  • zxs9999
  • 2012年04月12日 13:57
  • 5739

Chrome源代码分析之single process 模式分析(十七)

如果选择了单进程模式,那么只需要建立一个renderer线程即可,同时为这个线程搭建ipc功能,虽然同一个进程,renderer与browser之间仍然通过ipc通信,这样多进程和单进程的通信方法统一...
  • namelcx
  • namelcx
  • 2013年06月08日 15:17
  • 1537

【Linux 基础篇】之 single模式修改密码

当出现如上图时,随意按下方向键使屏幕留住   按e键 进行编辑 选择第二项 kernel 按e进入如下:     输入 single  回车保存, 按b启...

Java中的线程(八)- Single Threaded Execution模式

单线程执行模式(Single Threaded Execution Pattern)是最简单的多线程设计模式,几乎所有其他的模式都在不同程度上应用了该模式。先看一个程序,通过它可以体验多线程程序无法正...

设计模式六大设计原则之单一职责原则(Single Responsibility Principle)

定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常...

Ubuntu Linux下single模式 登录法

今天装linux系统的时候,重启发现root密码不记得了,在同事指导下通过single模式解决,于是搜索了一篇关于single的文章,在此转载!Ubuntu Linux下single模式无需密码方法1...

多线程设计模式(一) Single Threaded Execution

这里有一座独木桥。因为桥身非常的细,一次只能允许一个人通过。当这个人没有下桥,另一个人就不能过桥。如果桥上同时又两个人,桥就会因为无法承重而破碎而掉落河里。 这就是Single Threaded Ex...
  • xsyfl
  • xsyfl
  • 2017年03月25日 14:41
  • 143

设计模式六大原则(1):单一职责原则SRP(Single Responsibility Principle)

文章转载于:http://blog.csdn.net/zhengzhb/article/details/7278174 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 ...
  • holon23
  • holon23
  • 2014年02月24日 11:42
  • 544
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中实现Single模式
举报原因:
原因补充:

(最多只允许输入30个字)