zoukankan      html  css  js  c++  java
  • 单例模式的学习

    单例模式

    • 类构造器私有
    • 持有自己类型的属性
    • 对外提供获取实例的静态方法

    意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    主要解决:一个全局使用的类频繁地创建与销毁。

    何时使用:当您想控制实例数目,节省系统资源的时候。

    如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

    关键代码:构造函数是私有的。

    单例模式又分为多种方式

    推荐使用的是双重锁模式,性能高,具体其他模式可见链接:https://www.jianshu.com/p/3bfd916f2bb2

    public class Singleton {  
        private volatile static Singleton singleton;  
      或者
      
    private volatile static Singleton singleton=null;
      
    //让构造函数为 private,这样该类就不会被实例化
      private Singleton (){}
     //获取唯一可用的对象
    public static Singleton getSingleton() {
    if (singleton == null) {  
            synchronized (Singleton.class) {  
            if (singleton == null) {  
                singleton = new Singleton();  
            }  
            }  
        }  
        return singleton;  
        }  
    }
    双重检查模式,进行了两次的判断,第一次是为了避免不要的实例,第二次是为了进行同步,避免多线程问题。由于singleton=new Singleton()对象的创建在JVM中可能会进行重排序,在多线程访问下存在风险,使用volatile修饰signleton实例变量有效,解决该问题。
  • 相关阅读:
    命名函数
    匿名函数
    Elixir基础
    Elixir特性
    linux下安装erlang
    更具先序、中序遍历生成二叉树
    第一章 TCP/IP协议族
    React Native开发之expo中camera的基本使用
    Vue中异步组件(结合webpack,转载)
    vue中将html字符串转换成html后的一些问题
  • 原文地址:https://www.cnblogs.com/cherishforchen/p/11627402.html
Copyright © 2011-2022 走看看