当前位置: 首页> 娱乐> 影视 > python设计模式——单例模式

python设计模式——单例模式

时间:2025/7/12 6:19:31来源:https://blog.csdn.net/bo_mask/article/details/140765326 浏览次数:0次

单例模式(Singleton Pattern)即一个类只能拥有一个实例对象,实例化多次的结果都会指向同一个对象。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

特点:全局唯一,允许更改

优点:

  • 避免对资源的多重占用,如写入文件操作
  • 节省内存
  • 防止命名空间被污染

缺点:

  • 没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化
通过继承方式实现单例模式:
# 继承实现class Singleton:def __new__(cls,*args,**kwargs):if not hasattr(cls, 'ins'):singletonInsObject = super().__new__(cls,*args,**kwargs)setattr(cls, 'ins', singletonInsObject)return getattr(cls, 'ins')class Category(Singleton):passif __name__ == '__main__':i= Category()print(id(i))c= Category()print(id(c))# 2234442501712
# 2234442501712
通过装饰器实现单例模式
def warpper(clsObject):def  inner(*args , **kwargs):if not hasattr(clsObject, "ins"):singletonInsObject = clsObject(*args,**kwargs)setattr(clsObject, 'ins',singletonInsObject)return  getattr(clsObject, 'ins')return inner@warpper
class Category:passif __name__ == '__main__':i= Category()print(id(i))c= Category()print(id(c))# 1633213381360
# 1633213381360
关键字:python设计模式——单例模式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: