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

}

单例模式demo的更多相关文章

  1. PHP单例模式 demo

    <?php class single{ static public $db; private function __construct(){ }; static function getinst ...

  2. 单例模式 demo

    // 用单例模式实现自定义颜色类 public class MyColor { private static MyColor _redColor = null; public static MyCol ...

  3. 一个简单的单例模式Demo

    /** * @author :nx014924 * @date :Created in 5/30/2021 1:09 PM * @description: * @modified By: * @ver ...

  4. 23种设计模式--单例模式-Singleton

    一.单例模式的介绍 单例模式简单说就是掌握系统的至高点,在程序中只实例化一次,这样就是单例模式,在系统比如说你是该系统的登录的第多少人,还有数据库的连接池等地方会使用,单例模式是最简单,最常用的模式之 ...

  5. C# 设计模式 - 单例模式 演示

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. jieba分词单例模式及linux权限不够情况下tmp_dir自定义

    在linux环境下,没有root权限的情况下,有时会碰到如下问题: Building prefix dict from the default dictionary ... Loading model ...

  7. volatile禁止重排使用场景与单例模式的Double Check Lock

    普通单例模式Demo public class Demo{ private static Demo INSTANCE; private Demo(){} public static Demo getI ...

  8. 设计模式之单例模式的简单demo

    /* * 设计模式之单例模式的简单demo */ class Single { /* * 创建一个本类对象. * 和get/set方法思想一样,类不能直接调用对象 * 所以用private限制权限 * ...

  9. 设计模式之单例模式及应用demo

    单例模式是创建型模式之一. 单例模式顾名思义是单例的,也就是只有一个实例化对象,这都来源于它的私有化构造函数. 单例模式特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3. ...

随机推荐

  1. spring mvc 的上传图片是怎么实现的?

    spring mvc 的上传图片是怎么实现的? 导入jar包,commons-io.jar 及 commons-fileupload.jar 在springmvc的配置文件中配置Mutipart解析器 ...

  2. Numpy中的广播原则(机制)

    为了了解这个原则,首先我们来看一组例子: # 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除这个数. In [12]: import numpy as np In [13]: ...

  3. 缓存算法(FIFO 、LRU、LFU三种算法的区别)

    FIFO算法 FIFO 算法是一种比较容易实现的算法.它的思想是先进先出(FIFO,队列),这是最简单.最公平的一种思想,即如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小.空间满的时 ...

  4. UVA1203 Argus

    思路 用堆维护每个触发器的下一个事件,每次取出一个事件再把对应触发器的下一个事件加入堆即可 代码 #include <cstdio> #include <algorithm> ...

  5. JavaScript形而上的单例模式

    什么是单例模式? 单例模式是指,类多次实例化返回的对象是同一个. 反例 var tt = function(name){ this.name = name; }; var t1 = new tt('t ...

  6. 元注解——java.lang.annotation.Target(1.8)

    参考资料:https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Target.html 普通注解’只能用来注解’代码’,而’元注 ...

  7. Java GC机制

    GC机制的基本算法是:分代收集,这个不用赘述.下面阐述每个分代的收集方法. 年轻代: 事实上,在上一节,已经介绍了新生代的主要垃圾回收方法,在新生代中,使用“停止-复制”算法进行清理,将新生代内存分为 ...

  8. mongodb笔记(二)

    1.使用mongodb的shell连接Mongodb服务: 标准URL连接语法: mongodb://[username:password@]host1[:port1][,host2[:port2], ...

  9. 『Python CoolBook:heapq』数据结构和算法_heapq堆队列算法&容器排序

    一.heapq堆队列算法模块 本模块实现了堆队列算法,也叫作优先级队列算法.堆队列是一棵二叉树,并且拥有这样特点,它的父节点的值小于等于任何它的子节点的值. 本模块实际上实现了一系列操作容器的方法,使 ...

  10. Python之时间(time)模块

    在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time( ...