Java19单例模式

作者: chad_it | 来源:发表于2016-11-25 17:48 被阅读7次

通过某个类创建对象时,在整个程序中,只能创建一个对象,这种类称为单例类。

饿汉式(类一旦加载,单例就初始化完成,保证调用getInstance的时候,单例已经存在)

单例类会一直占用资源

package com.javawu.singleton;
public class Singleton{

    private static Singleton singleton= new Singleton();
    
    private Singleton() {
        
    }
    
    public static Singleton getInstance() {
        return singleton;
    }
}

懒汉式(延迟加载,调用getInstance的时候才回去初始化这个单例)

package com.javawu.singleton;

public class Singleton{
#2.声明类的静态变量(静态变量跟对象无关)
    private static Singleton singleton = null;
    
#1.使用private修饰默认的构造方法(类外部不能使用new创建对象)
    private Singleton () {
        // TODO 自动生成的构造函数存根
    }
#3.创建返回对象的方法
#4.判断,对象存在不再创建
#5.(1)为了保证线程同步,改为同步方法(每次调用都会做线程同步)
    public static synchronized Singleton getInstance() {
        if(singleton == null) {
            singleton = new Singleton ();
        }
        return singleton;
    }
#5.(2)双重检查锁定(和1相比只有第一次调用单例的时候才会做线程同步)
//使用双重检查锁定,signleton需要用volatile修饰
//即 private volatile static Singleton sigleton = null;
//详见:http://www.iteye.com/topic/652440
    public static Singleton getInstance() {
        if(singleton == null) {
            synchronized(Singleton.class) {
                if(singleton == null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
#5.(3)静态内部类(3种延迟加载方式中最优的)
    public static Singleton getInstance() {
        private static class Holder {
            private static final Singleton instance = new Singleton();
        }
        private Singleton() {
        }
        public static final Singleton getInstance() {
            return Holder.instance;
        }
    }
}

据称还有一个最佳的单例实现方法--单个成员的枚举

package com.javawu.singleton;

public enum Singleton {
    //定义一个枚举元素
    instacnce;
    //这个单例类具有的方法
    public void method() {
        
    }
}

相关文章

  • Java19单例模式

    通过某个类创建对象时,在整个程序中,只能创建一个对象,这种类称为单例类。 饿汉式(类一旦加载,单例就初始化完成,保...

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • 设计模式之单例模式详解

    设计模式之单例模式详解 单例模式写法大全,也许有你不知道的写法 导航 引言 什么是单例? 单例模式作用 单例模式的...

  • Telegram开源项目之单例模式

    NotificationCenter的单例模式 NotificationCenter的单例模式分析 这种单例模式是...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • IOS单例模式的底层原理

    单例介绍 本文源码下载地址 1.什么是单例 说到单例首先要提到单例模式,因为单例模式是单例存在的目的 单例模式是一...

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • 单例模式

    单例模式1 单例模式2

网友评论

    本文标题:Java19单例模式

    本文链接:https://www.haomeiwen.com/subject/zaqwpttx.html