专业编程基础技术教程

网站首页 > 基础教程 正文

python单例模式的理解,就是单个实例

ccvgpt 2024-07-28 12:11:57 基础教程 8 ℃

下面用普通实例和单例模式对比,来理解什么是单例模式和一些应用场景

普通实例和单例模式区别

python单例模式的理解,就是单个实例

普通实例:创建多个实例,执行多次__new__()方法,实例化创建多个,执行多次(默认)

单例模式:创建多个实例,只执行一次__new__()方法,实例化创建多个,执行一次(自己通过逻辑实现)。单例模式其实也是普通实例的一种特殊形式

  • 通过重写__new__()方法,来实现只执行一次__new__()方法,实例化用 类() 就可以自动执行__new__()方法,来创建实例
  • 通过自定义类方法(如get_instance),实现只执行一次__new__()方法,实例化用 类.get_instance(),来创建实例

1、普通实例:实例化可创建多个对象

创建对象方法:用 类() 的形式来创建对象

普通实例



2、单例模式:单个实例,实例化永远只创建一个对象

使用场景:

所有封装数据都一样时,资源可以共享时,使用单例模式类更有优势

  • 例如1:创建连接池保持连接池个数,主要是节省打开或者关闭数据库连接所引起的效率损耗
  • 例如2:多线程的线程池设计,单例模式便于对线程池中的线程进行控制
  • 例如3:Web应用读取配置文件,由于配置文件是共享的资源
  • 例如4:Socket创建连接
  • 还有很多应用场景

优势

  • 好处1:如果创建实例时间长,可以节省时间,提高效率。
  • 好处2:仅仅创建一个实例,可以节省内存。

单例模式 模板一:__news__() 方法,创建对象

明确两个小知识点

  1. 类定义: class Animal: 为简写方式,等价于Animal(object):
  2. 类加括号(类())就会先去执行__new__方法,再执行__init__方法

单例模式 模板一


单例模式 模板二:自定义类方法,创建对象

两点说明

  1. 用类方法的形式创建对象,类.类方法()
  2. 单独写一个类方法来实例化对象

单例模式 模板二

Tags:

最近发表
标签列表