python3的配置文件类单例实现_单例模式:在Python中的研究

15f29a9fca32ed847b1b46fd7aa84d5d.png

单例模式:一个来自“四人帮”著作中的“创造模式”

Gang of Four (GOF):设计模式四人组(“四人帮”,又称Gang of Four,即Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides四人)的《设计模式》,原名《Design Patterns: Elements of Reusable Object-Oriented Software》(1995年出版,出版社:Addison Wesly Longman.Inc),第一次将设计模式提升到理论高度,并将之规范化。

结论

Python程序员几乎从不会像“四人帮”著作中所描述的那样来实现单例模式,其单例类禁止正常的实例化,而是提供一个返回单例实例的类方法。Python更加优雅,它允许类继续支持用于实例化的常规语法,同时定义一个返回单例实例的自定义的__new__()方法。但是,如果你的设计强制要求你提供对单例对象的全局访问,那么一个更python化的方法是使用全局对象模式代替。

解疑

在面向对象设计模式社区定义“单例模式”之前,Python就已经在使用术语singleton了。因此,我们应该首先从区分Python中“singleton”的几个含义开始。

  1. 长度为1的元组称为一个单例。虽然这个定义可能会让一些程序员感到惊讶,但它反映了数学中单例的原始定义:一个只包含一个元素的集合。Python教程本身介绍了这个定义的新成员,在其关于数据结构的章节中,将单元素元组称为一个“单例”,并且在Python文档的其他部分中,这个词仍然以这个意思来使用。当《扩展和嵌入指南》中写到,“使用一个参数去调用Python函数…传递一个单例元组”时,这意味着它是只包含一个项的元组。

  2. 模块在Python中是“单例”,因为import只创建每个模块的一个单独副本;同名的后续导入将不断返回相同的模块对象。例如,当Python/C API参考手册的模块对象一章断言“Single-phase初始化会创建单例模块”时,它的意思是一个“单例模块”,即一个只有一个对象会为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值