IoDH 实现的单例模式

饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存;懒汉式单例类线程安全控制烦琐,而且性能受影响。有种更好的单例模式叫做Initialization Demand Holder (IoDH)的技术。

public class Singleton {

    private Singleton(){
        System.out.println(Singleton.class);
    }

    private static class HolderClass{
        private final static Singleton s = new Singleton();
    }

    public static Singleton getInstance(){
        return HolderClass.s;
    }

    public static void main(String[] args) {
        Singleton s = Singleton.getInstance();
    }

}
时间: 2024-10-12 09:23:11

IoDH 实现的单例模式的相关文章

设计模式之(三)——单例模式

单例模式: 根据单例模式的设计思想,就是想保证类只有一个实例即只有一个对象.而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源等. 一般出现的场景是: 1.资源共享的情况下,避免由于资源操作时导致的性能或损耗等.如记录系统日志文件,共享配置文件的读取. 2.控制资源的情况下,方便资源之间的互相通信.如线程池,数据库连接池等. 实现方法很多种: 1.饿汉式: public class SingletonTest { private static SingletonTest instan

java单例模式的心得

由于设计模式对于java高级开发人员来说是非常重要的,网上也有很多关于设计模式的文章,博客等.所以,首先我对相对简单的单例模式做一个简单的总结. 一.实现方式 单例模式的实现方式有3种,分别是饿汉式,懒汉式,IoDH这3种,下面分别介绍下每种的实现原理和优缺点. a)饿汉式 实现原理:类具有一个静态成员变量,且初始化的值是一个实例化的对象本身. 优点:即使多线程并发访问也可确保只有一个唯一的对象:在获取对象时候,可以快速响应. 缺点:类加载时就创建了对象,导致资源利用率不高. b)懒汉式 实现原

(转)设计模式之——单例模式(Singleton)的常见应用场景

单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此有些设计大师并把把其称为设计模式之一. 这里又不具体讲如何实现单例模式和介绍其原理(因为这方便的已经有太多的好文章介绍了),如果对单例模式不了解的可以先看下:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html .当然也可以自己搜索.

[转]单例模式详解

3.1 单例模式的动机 对于一个软件系统的某些类而言,我们无须创建多个实例.举个大家都熟知的例子--Windows任务管理器,如图3-1所示,我们可以做一个这样的尝试,在Windows的"任务栏"的右键弹出菜单上多次点击"启动任务管理器",看能否打开多个任务管理器窗口?如果你的桌面出现多个任务管理器,我请你吃饭,(注:电脑中毒或私自修改Windows内核者除外).通常情况下,无论我们启动任务管理多少次,Windows系统始终只能弹出一个任务管理器窗口,也就是说在一个

Java并发编程-单例模式

为什么要使用单例模式 实际开发中,为了节约系统资源,有时需要确保系统中某个类只有唯一的一个实例,当这个唯一实例创建成功后,就无法再创建一个同类型的其它对象,所有的操作都只能基于这个唯一实例.为了确保实例的唯一性,可以通过单例模式实现. 最简单的单例类设计 public class Single { // 设置instance为静态变量 private static Single instance = null; // 构造方法私有化 private Single() {} // 静态方法-实例化

java基础之----23种设计模式(单例模式)

概述 提到单例模式,我们并不陌生,而且面试中也常常会问单例模式相关的问题,接下来就谈谈单例模式,这篇文章会回答如下几个问题: 什么是单例模式? 单例模式有几种实现方式,以及各种实现方式的优劣? 单例模式有什么用? 什么是单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点.这是<设计模式>(艾迪生维斯理, 1994)中的定义. 单例模式有几种实现方式 先说答案,有三种,基本上我们只知道两种,就是懒汉式和饿汉式,其实还有第三种,通过静态内部类实现单例模式,下面就说说这三种实现方式. 饿

Java设计模式学习笔记,一:单例模式

开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的笔记,记录下来,只记干货. 第一部分:单例模式的内容 单例模式:类只能有一个实例. 类的特点:1.私有构造器:2.内部构造实例对象:3.对外提供获取唯一实例的public方法. 常见的单例模式实现有五种形式: 1.饿汉式. 2.懒汉式. 3.双重检查锁式. 4.静态内部类式. 5.枚举式. 以下分别

【python之路33】开发模式单例模式

1.单例模式指的是创建单个实例,例如:数据库连接池中包含10个数据库连接,用户访问数据时随机从连接池中拿出一个进行连接,其他用户再次访问时不再创建对象进行连接 #!usr/bin/env python # -*- coding:utf-8 -*- class ConnecttionPool: __instance = None def __init__(self): self.ip = '222.133.177.67' self.port = '3306' self.username = 'od

.Net 单例模式(Singleton)

每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中.每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情况.每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用. 问题描述: 单例模式 Singleton Pattern 问题解决: (1)单例模式简介: Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点.这