zoukankan      html  css  js  c++  java
  • 单例模式demo

    package com.test;


    /**
    *
    * @author Administrator
    *我的发现:调用这个的时候,不能直接实例化了;需要=null;然后get; 这样安全些;
    *然后仔细找了下单例模式的解释,发现是这样的;单例模式要线程安全,有单独且唯一的一个例子;
    *所以重新了构造方法,改成了安全的private,然后加了一个例子,setget方法(set方法干掉了、),
    *这里是饿汉式单例模式,在类初始化的时候就新实例化了一个唯一的实例了;
    *
    *注: 单例模式有以下特点:
      1、单例类只能有一个实例。
      2、单例类必须自己创建自己的唯一实例。
      3、单例类必须给所有其他对象提供这一实例。

    单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例(略)。
    */
    public class SingletonClass {
    //饿汉式:
    /*
    private SingletonClass() {}

    private static final SingletonClass instance = new SingletonClass();

    public static SingletonClass getInstance() {
    return instance;
    }
    */
    //懒汉式:
    /*
    private SingletonClass() {}

    private static SingletonClass instance = null;

    public static SingletonClass getInstance() {
    instance = new SingletonClass();
    return instance;
    }
    */
    //懒汉式在getInstance方法上+同步:
    /*
    private SingletonClass() {}

    private static SingletonClass instance = null;

    public static SingletonClass getInstance() {
    if(instance==null){
    instance = new SingletonClass();
    }
    return instance;
    }
    */
    //懒汉式+双重检查锁定
    /*
    private SingletonClass() {}

    private static SingletonClass instance = null;

    public static SingletonClass getInstance() {
    if(instance==null)
    synchronized (SingletonClass.class) {
    if(instance==null){
    instance = new SingletonClass();
    }
    }
    return instance;
    }
    */
    //静态内部类
    //(既实现了线程安全,又避免了同步带来的性能影响)
    private static class LazyHolder {
    private static final SingletonClass INSTANCE = new SingletonClass();
    }

    private SingletonClass() {
    }

    public static final SingletonClass getInstance() {
    return LazyHolder.INSTANCE;
    }

    }

  • 相关阅读:
    React
    TypeScript 引入第三方包,报无法找到模块错误
    typescript / webpack报错“can only be default-imported using the 'esModuleInterop' flag
    React & Webpack & Typescript & scss
    Cannot set property ‘innerHTML’ of null 错误原因
    Kick Start 2019
    delet[] 和delete
    c++ 深入理解虚函数
    C++ 虚函数表解析
    typedef void(*Func)(void)的简单用途
  • 原文地址:https://www.cnblogs.com/signoffrozen/p/7131723.html
Copyright © 2011-2022 走看看