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;
    }

    }

  • 相关阅读:
    数组去重复的时候遇到length变成1 的bug
    js中的setTimeout第三个参数
    Maven安装过程
    wordpress 修改过程
    CentOS 6.5 安装 MySQL5.6 并用Navicat for MySQL 连接
    解决安装WordPress主题及插件需要输入FTP问题
    mysql语句记录
    How to set a MySQL root user password in MAC OSX
    【转】解决Windows不能在本地计算机启动apache tomcat
    近期要看文章(20150105)
  • 原文地址:https://www.cnblogs.com/signoffrozen/p/7131723.html
Copyright © 2011-2022 走看看