码迷,mamicode.com
首页 > 编程语言 > 详细

Python设计模式之单例模式

时间:2016-10-12 18:56:56      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

1.由于语言的特性不同,设计模式的实现方式和实现难度也会不同

2.有的模式已经在语言内置了,比如迭代器模式。

3.单例模式可以直接用模块级变量来实现

4.普通工厂模式可以直接通过传入“类名”作为参数实现

 

单例模式实例:

 

12_eg.py

class SingleClass:

    def __init__(self,x=0):

        self.x = 0

 

sc = SingleClass()

 

def tsc():

    print(sc.x)

    sc.x = 10

    print(sc.x)

 

def tsc2():

    print(sc.x)

    sc.x = 9

    print(sc.x)

 

if __name__ == ‘__main__‘:

    tsc()

    tsc2()

 

程序的运行结果为:

技术分享

 

12_egs.py

class Singleton:

 

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

 

        if not hasattr(cls,‘_sgl‘):

            cls._sgl = super().__new__(cls,*args,**kwargs)

        return cls._sgl

 

if __name__ == ‘__main__‘:

    sa = Singleton()

    sb = Singleton()

    print(id(sa))

    print(id(sb))

 

程序的运行结果为:

技术分享

 

通过传入“类名”作为参数实现:

 

12_eg2.py

class Ab:

    a = 3

 

class Ac:

    a = 0

 

class MyFactory:

    def get_instance(self,ins):

        return ins()

 

if __name__ == ‘__main__‘:

    mf = MyFactory()

    print(type(mf.get_instance(Ab)))

    print(type(mf.get_instance(Ac)))

 

程序的运行结果为:

 技术分享

 

 

原文链接:http://www.maiziedu.com/wiki/python/designpattern/

Python设计模式之单例模式

标签:

原文地址:http://www.cnblogs.com/space007/p/5953829.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!