当前位置: 首页 > wzjs >正文

企业网站 源码百度指数如何分析

企业网站 源码,百度指数如何分析,做网站源码要给客户嘛,插画素材网站有哪些一、单例模式核心思想 单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。该模式主要解决以下问题: 资源控制(如数据库连接池)配置信息全局一…

在这里插入图片描述

一、单例模式核心思想

单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。该模式主要解决以下问题:

  • 资源控制(如数据库连接池)
  • 配置信息全局一致性
  • 避免重复创建消耗资源的对象

二、Python实现单例的5种方式

1. 模块级单例(Pythonic方式)

# singleton.py
class _Singleton:def __init__(self):self.value = Noneinstance = _Singleton()# 使用方式
from singleton import instance
instance.value = "Hello"

原理:Python模块在首次导入时会执行初始化,后续导入都使用同一个实例

2. 装饰器实现

def singleton(cls):instances = {}def wrapper(*args, **kwargs):if cls not in instances:instances[cls] = cls(*args, **kwargs)return instances[cls]return wrapper@singleton
class Logger:pass

优势:可复用装饰器,不影响类原有逻辑

3. __new__方法重写

class Singleton:_instance = Nonedef __new__(cls, *args, **kwargs):if not cls._instance:cls._instance = super().__new__(cls, *args, **kwargs)return cls._instance

注意:需同时重写__init__避免重复初始化

4. 元类实现

class SingletonMeta(type):_instances = {}def __call__(cls, *args, **kwargs):if cls not in cls._instances:cls._instances[cls] = super().__call__(*args, **kwargs)return cls._instances[cls]class Database(metaclass=SingletonMeta):pass

特点:在类创建层面控制实例化行为

5. 线程安全单例(带锁版)

from threading import Lockclass ThreadSafeSingleton:_instance = None_lock = Lock()def __new__(cls):if not cls._instance:with cls._lock:if not cls._instance:  # 双重检查cls._instance = super().__new__(cls)return cls._instance

三、单例模式深度分析

生命周期管理

  • Python的单例生命周期与模块/程序相同
  • 可通过弱引用(weakref)实现可销毁的单例

继承问题

子类化单例类时需注意:

class BaseSingleton(metaclass=SingletonMeta): passclass ChildA(BaseSingleton): pass  # 正确
class ChildB(BaseSingleton): pass  # 与ChildA不是同一个实例

测试注意事项

  1. 使用unittest.mock.patch替换单例实例
  2. 测试间注意清理单例状态

四、实际应用场景

典型案例

  1. 日志记录器(全局统一日志配置)
  2. 数据库连接池管理
  3. 应用配置管理
  4. 设备驱动访问(如打印机)

Django中的单例实践

# settings.py 本质是模块级单例
from django.conf import settings# middleware.py 中间件通常设计为单例
class CustomMiddleware:_instance = Nonedef __new__(cls):if cls._instance is None:cls._instance = super().__new__(cls)cls._instance.init_resources()return cls._instance

五、反模式与替代方案

滥用单例的坏处

  1. 隐式耦合(hidden dependencies)
  2. 测试困难
  3. 违反单一职责原则

替代方案

  1. 依赖注入(Dependency Injection)
  2. 全局变量(简单场景)
  3. 上下文管理器(资源管理场景)

六、性能优化建议

  1. 使用__slots__减少内存占用
  2. 延迟初始化(Lazy Initialization)
  3. 考虑使用functools.lru_cache实现缓存式单例
from functools import lru_cache@lru_cache(maxsize=1)
def get_config():return load_config_file()

七、总结

Python实现单例的推荐选择:

  • 简单场景:模块变量
  • 需要继承:装饰器或元类
  • 多线程环境:带锁实现
  • 需要缓存功能:lru_cache

最佳实践:除非确需全局唯一实例,否则优先考虑依赖注入等更灵活的模式


文章转载自:

http://4TqapgRT.nwLLb.cn
http://S4qITfzK.nwLLb.cn
http://ImDhpdQN.nwLLb.cn
http://0DaH9BBY.nwLLb.cn
http://OyXTRUby.nwLLb.cn
http://qiHFNFAG.nwLLb.cn
http://Nbi0WH0f.nwLLb.cn
http://AU2QMFiI.nwLLb.cn
http://ECr1epTi.nwLLb.cn
http://jnJHzGLH.nwLLb.cn
http://OgcjZN6U.nwLLb.cn
http://vMCnIOH7.nwLLb.cn
http://XLXGB5FW.nwLLb.cn
http://4rUOLlJ9.nwLLb.cn
http://KCNZjZT0.nwLLb.cn
http://CCJ544Tw.nwLLb.cn
http://GTVfWHWf.nwLLb.cn
http://FcxLsw2Q.nwLLb.cn
http://hINyQ335.nwLLb.cn
http://f3btc6GU.nwLLb.cn
http://yR7gmDhL.nwLLb.cn
http://TMqzU5Yl.nwLLb.cn
http://16mf0lic.nwLLb.cn
http://k1lge7Q3.nwLLb.cn
http://pAMRz8Fs.nwLLb.cn
http://wXkPXpA4.nwLLb.cn
http://Lj4azyKm.nwLLb.cn
http://Me8TwzMA.nwLLb.cn
http://cf3L3tJ7.nwLLb.cn
http://lgQm0cMV.nwLLb.cn
http://www.dtcms.com/wzjs/763664.html

相关文章:

  • 开源网站下载福步论坛
  • 做鞋设备网站wordpress 淘宝客单页
  • 提供零基础网站建设教学学院网站群建设的目标
  • 视频生成链接在线工具共享门店新增跑腿距离计算优化
  • 公司建网站多少钱一个河南省住房和城乡建设部网站
  • 设计logo网站是平面设计不网站默认中文字体
  • 南昌建设工程质量监督网站浙江省住房建设厅网站
  • 成都网站app开发广州品牌设计公司
  • 怎么样推广网站专做视频和ppt的网站
  • 案例模板我的网站珠海住建网站
  • 网站跳转怎么做内蒙古建设厅公示网站
  • 上海网站制作顾门源县住房和城乡建设局网站
  • 个人网站 logo 版权 备案 没用苏州市住房和城乡建设局投折网站
  • 西宁建设厅培训中心网站网站建设分工说明
  • 网站开发的3个阶段自己做网站服务器多少钱
  • 政务网站建设规划培训学做网站要多久
  • 空间有了怎么做网站wordpress 融资
  • WordPress交互式网站网址导航下载到桌面
  • 做论坛网站需要备案视频号推广平台
  • 设计了网站昆明做网站seo的
  • 网站前端建设需要学会什么网络营销与网络推广的关系
  • 如何看网站有没有备案申请邮箱怎么注册
  • 网站app在线生成器wordpress多本小说站出售
  • 游戏网站的设计要做网站到哪里做
  • 深圳企业网站建设服务中心北京vi设计培训
  • 网站备案没通过不了专业网站优化关键词
  • 我要进入手机建设银行网站网站建设 齐鲁软件园
  • 网站qq弹窗代码帝国cms 网站描述的全局变量
  • flash 开发的网站企业做网站哪家好
  • 上海市建设工程检测行业协会网站制作网页和做网站是一个意思吗