• 理解设计模式(单例)


      单例模式,确保类实例的唯一性。

    • 特定环境:系统要求某类实例唯一,如系统计时工具仅有一个
    • 一类问题:业务需要某些管理角色唯一,以避免混乱
    • 解决方案:单例模式

    单例模式要点

    • 前提:某类只有一个实例
    • 行为:自行创建该实例
    • 功能:对整个系统提供该实例

    要点实现

    • 该类只提供私有构造函数
    • 该类含其静态私有对象
    • 该类含静态公共方法,以获取唯一实例

    应用场景

    部分资源管理器,打印任务管理,系统日志管理,网站当前人数统计,异常统一管理,Struts过滤器和监听器,数据库ID生成,等等

    优点

    • 主要用于满足业务需求(目的所在
    • 控制实例的单一,且灵活更改实例化过程
    • 另外,单例模式可节约内存。但这不过是顺带作用罢了,其目的不在于此

    缺点

    • 每次需检测实例的唯一性,有额外开销
    • 对象生命周期不明确

    实现思路

    详见“关于单例模式2”

    1、当需要时,静态实例化(懒汉式)
    2、先实例化,需要时则直接提供(饿汉式)
    3、静态内部类
    4、枚举类
    5、双重锁机制,用于并发环境

    public class Singleton {
        private static Singleton instance = null;
    
        private Singleton() {
            //dosomething
        }
    
        public static Singleton getInstance() {
            if (instance == null) {
                synchronized (Singleton.class) {
                    if (null == instance) {
                        instance = newSingleton();
                    }
                }
            }
    
            return instance;
        }
    }
    

    这个模式将同步内容下方到if内部,提高了执行的效率
    不必每次获取对象时都进行同步
    只有第一次才同步,创建了以后就没必要了

    参考

    单例模式的7种写法

  • 相关阅读:
    leetcode
    Vim i和a差别
    HDU-4643-GSM(DFS)
    使用可编程电源自动化输出电源
    如何使用全局变量
    异步和同步
    启动界面
    鼠标右键弹出菜单
    Qt+excel
    Qt+数据库
  • 原文地址:https://www.cnblogs.com/CoolSoul/p/4984857.html
Copyright © 2020-2023  润新知