python编程入门单例_《Python编程实战:运用设计模式、并发和程序库创建高质量程序》—— 1.5 单例模式-阿里云开发者社区...

本节书摘来自华章出版社《Python编程实战:运用设计模式、并发和程序库创建高质量程序》一 书中的第1章,第1.1节,作者:(美) Mark Summerfield,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 单例模式

在整个程序运行过程中,如果某个类只应该有一个实例,那么可通过单例模式来保证。

有些面向对象编程语言很难创建单例,但在Python语言中却非常简单。Python Cookbook(code.activestate.com/recipes/langs/python/)提供了非常易用的Singleton类,只要继承它,就会成为单例。此外还提供了Borg类,可以用另一种方式实现单例效果。

然而在Python中实现单例最为简单的办法是:创建模块时,把全局状态放在私有变量中,并提供用于访问此变量的公开函数。比方说,在第7章的currency范例中,我们要创建一个函数,令其返回含有货币汇率的字典(该字典以货币名称为键,以汇率为值)。这个函数可能会调用很多次,但大部分情况下,汇率数据只获取一次就够了,无须每次调用时都获取一遍。此需求可以通过单例模式来实现。

615585698aa960ef97e7f5192e8ef15ac9ca7b31.png

这段代码节选自currency/Rates.py模块(与往常一样,节选代码时也略去了import语句)。我们创建了名为rates的字典,用于保存私有数据,并将该字典设置成Rates.get()函数的属性。第一次执行公开的get()函数时(或者以refresh=True为参数调用时),会下载全新的汇率数据;其他时候只需把最近下载的那份数据返回就行了。尽管没有引入类,但我们依然把汇率数据做成了“单例数据值”(singleton data value),若要添加其他单例值,亦可仿照此法。

创建型设计模式在Python语言中都很容易实现。单例模式可以直接用模块来实现,而原型模式则显得多余,尽管也可以通过copy模块来实现,但Python语言能够动态访问类对象,所以没必要那么做。最有用的创建型设计模式是抽象工厂模式、工厂方法模式与建造者模式,它们的实现方式有很多种。创建好基本的对象之后,一般需要通过组合或适配来创建更为复杂的对象。下一章就来谈谈这个问题。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值