• 设计模式_理解单例设计模式


    设计模式分类:
    结构型
    行为型
    创建型

    单例模式属于创建型设计模式
    
    单例模式主要使用在
    日志记录 ->将多项服务的日志信息按照顺序保存到一个特定日志文件
    数据库操作 -> 使用一个数据库对象进行操作,保证数据的一致性
    打印机后台处理程序
    以及其他程序
    
    
    该程序运行过程中
        只能生成一个实例
           避免对同一资源产生相互冲突的请求  

    单例设计模式的意图:
        确保类有且只有一个对象被创建。
        为对象提供一个访问点,以使程序可以全局访问该对象。
        控制共享资源的并行访问

    单例模式的 UML 图

    实现单例模式的一个简单方法是:
        使构造函数私有化
        并创建一个静态方法来完成对象的初始化
    
    这样做的目的是:
        对象将在第一次调用时创建
        此后,这个类将返回同一个对象

    实践:
        1.只允许Singleton类生成一个实例。
        2.如果已经有一个实例了  则重复提供同-个对象
    
    class Singletion(object):
        def __new__(cls):
            '''
            覆盖 __new__方法,控制对象的创建
            '''
            if not hasattr(cls,'instance'):
                '''
                hasattr 用来了解对象是否具有某个属性
                    检查 cls 是否具有属性 instance
                    instance 属性的作用是检查该类是否已经生成了一个对象
                '''
                cls.instance = super(Singletion,cls).__new__(cls)
            '''
            当对象s1被请求创建时,hasattr发现对象已经存在
                对象s1将被分配到已有的对象实例
            '''
            return cls.instance
    
    s = Singletion()
    '''
    s对象 通过 __new__ 方法进行创建
        在创建之前,会检查对象是否已存在
    '''
    print("对象已经创建好了:",s)
    
    s1 = Singletion()
    print("对象已经创建好了:",s1)
    
    '''
    运行结果:
    对象已经创建好了: <__main__.Singletion object at 0x000001EE59F93340>
    对象已经创建好了: <__main__.Singletion object at 0x000001EE59F93340>
    '''

    2020-05-09

    如果觉得文章不错,可以分享给其他人哟~
  • 相关阅读:
    docker 的使用
    WEB应用支持RESTFUL风格方法
    tomcat7 安装 windows 服务
    获取POM.XML依赖的JAR包
    集成 dubbo 微服务
    linux 修改yum 为阿里云源
    poj3904
    2013 ACM/ICPC 长春网络赛E题
    2013 ACM/ICPC 长春网络赛F题
    2013 ACM/ICPC 长沙网络赛J题
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12856511.html
Copyright © 2020-2023  润新知