zoukankan      html  css  js  c++  java
  • 实现单例模式及应用场景

    单例模式面试经常被问

    应用场景:日志logger插入,计时器、权限校验、​网站计数器,windows资源管理器,回收站,线程池,数据库连接池等资源池。

    什么情况下需要单例模式:

    1.每个实例都会占用资源,而且每个实例初始化都会影响性能;

    2.当有同步需求的时候,如日志文件的控制,确保只有一个实例。

    上代码:

    #使用装饰器实现单例模式
    def singleton(cls):
    __instance = {}
    def __getinstance():
    if cls not in __instance:
    __instance[cls] = cls()
    return __instance[cls]
    return __getinstance
    @singleton
    class Dog:
    pass
    obj = Dog()
    obj1 = Dog()
    print(id(obj),id(obj1))

    如下是使用__new__来实现单例模式
    复制代码
    class singleton(object):
        __isinstance = None
     
        def __new__(cls, *args, **kwargs):
            if cls.__isinstance is None:
                cls.__isinstance = object.__new__(cls)
                return cls.__isinstance
            else:
                return cls.__isinstance
            
     
    a = singleton()
    b = singleton()
    print(id(a))
    print(id(b))
    复制代码
  • 相关阅读:
    php && 逻辑与运算符使用说明
    php无穷递归算法
    PHP foreach 用法
    centos安装g++
    php 编译中apxs
    shutdown()
    C语言strtok()函数:字符串分割
    细谈select函数(C语言)
    setsockopt的作用
    STL之七:STL各种容器的使用时机详解
  • 原文地址:https://www.cnblogs.com/fan-1994716/p/14006051.html
Copyright © 2011-2022 走看看