python单例设计模式_Python设计模式之单例模式

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()

程序的运行结果为:

090935f56a815a4a3b613dbf15fdf74d.png

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))

程序的运行结果为:

f4a25790a15dc70e9b9b0f11b87baea4.png

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

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)))

程序的运行结果为:

ba06789b967b7dae587bd7cc46d20d69.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值