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

    }

  • 相关阅读:
    etymology-R
    arp与免费arp的差别,arp老化
    基于S3C2440的linux-3.6.6移植——LED驱动【转】
    《unix环境高级编程》学习笔记【原创】
    安装截图工具 Shutter【转】
    《UNIX环境高级编程第三版》apue.h等源码文件的编译安装【转】
    Ubuntu 下安装Source Insight [转]
    "makefile:5: *** missing separator. Stop."【转】
    深入浅出剖析C语言函数指针与回调函数(一)【转】
    总结与反思、理想与规划---嵌入式学习之旅【原创】
  • 原文地址:https://www.cnblogs.com/signoffrozen/p/7131723.html
Copyright © 2011-2022 走看看