• 单例模式


    单例模式定义:

      确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.

    创建过程:

    /**
     * 标准的单例模式代码结构
     */
    public class MySingleton {
        private static MySingleton ourInstance = new MySingleton();
    
        // 通过此方法获得对象实例
        public static MySingleton getInstance() {
            return ourInstance;
        }
    
        // 对外关闭构造方法
        private MySingleton() {
        }
    
        // 其他方法 尽量做成 static
        public static void other(){
    
        }
    }

    优点:

    • 在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁的创建、销毁时,而创建或销毁时性能又无法优化,单例模式的优势就非常明显
    • 只生成一个实例,所以减少了系统性能的开销,当一个对象产生需要比较多的资源时,单例一般不会被JVM回收(需要注意JVM的回收机制)
    • 单例模式可以避免对资源的多重占用
    • 单例模式可以在系统设置全局的访问点,优化共享资源访问,例如可以设计一个单例类,负责所有数据表的映射处理

    缺点:

    • 一般没有接口,扩展很困难。
    • 单例模式对测试不利,在并行开发环境中,如果单例模式没有完成,是不能进行测试的
    • 单例模式与单一职责原则有冲突,一个类应该只实现一个逻辑,而不关心它是否是单例的

    需要注意的地方:

      关于线程安全代码(懒汉式单例)

    /**
     * 懒汉式单例
     */
    public class MySingleton {
        private static MySingleton ourInstance = new MySingleton();
    
        // 通过此方法获得对象实例
        public static synchronized MySingleton getInstance() {
            if(ourInstance != null){
                ourInstance = new MySingleton();
            }
            return ourInstance;
        }
    
        // 对外关闭构造方法
        private MySingleton() {
        }
    
        // 其他方法 尽量做成 static
        public static void other(){
    
        }
    }

      

  • 相关阅读:
    vi编辑器更新...
    centos7 修改密码
    Linux的vi编辑器笔记
    linux 基本命令2(12月27日笔记)
    linux 进阶命令笔记(12月26日)
    linux 基础命令(12月25日笔记)
    谈谈CSS3中display属性的Flex布局(弹性布局)
    微信小程序页面跳转的三种方式总结
    微信小程序animation有趣的自定义动画
    微信小程序wx.setStorage(OBJECT)
  • 原文地址:https://www.cnblogs.com/banywl/p/7847594.html
Copyright © 2020-2023  润新知