栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

java中单例模式经典代码案例(饿汉式,懒汉式,静态内部类式,懒汉式反射和反序列化漏洞处理)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java中单例模式经典代码案例(饿汉式,懒汉式,静态内部类式,懒汉式反射和反序列化漏洞处理)

java中单例模式经典代码案例(饿汉式,懒汉式,静态内部类式,懒汉式反射和反序列化漏洞处理) 1.饿汉式单例模式(一上来就创建对象,饿的不行了)。

优点:线程安全,效率高。缺点:不能延时加载,占用资源

package com.liangrui.singletonMode;


public class EvilHanStyle {
    //类初始化时加载对象,加载类,线程安全,但是会造成不必要的资源占用
    private static EvilHanStyle instance=new EvilHanStyle();

    //禁用构造器
    private EvilHanStyle(){
    }

    //获取单例对象的方法
    public static EvilHanStyle getInstance(){
        return instance;
    }
}

2.懒汉式单例模式(对象为空才创建对象,没有了才创建,不提前创建)

优点:实现了延时加载,避免资源占用。缺点:加入同步机制,效率低
此例子还防止了反射和反序列化漏洞

package com.liangrui.singletonMode;

import java.io.Serializable;


public class LazyStyle implements Serializable {

    //初始化时不加载对象,实现延时加载
    private static LazyStyle instance;

    //禁用构造器
    private LazyStyle(){
        //如果对象不为空,则抛出运行时异常,防止了反射的漏洞导致创建新的对象
        if (instance!=null){
            throw new RuntimeException();
        }
    }

    //加入同步,避免多线程调用导致创建不同对象,也就导致效率低
    public static synchronized LazyStyle getInstance(){
        //对象为空时才创建,避免资源占用
        if (instance==null){
            instance=new LazyStyle();
        }
        return instance;
    }

    //添加此方法,返回对象,防止反序列化漏洞创建新对象
    private Object readResolve(){
        return instance;
    }
}

静态内部类式

优点:线程安全,效率高,实现了延时加载,避免不必要的资源占用,这种方式集合了饿汉式和懒汉式的优点

package com.liangrui.singletonMode;


public class StaticInnerClassStyle {

    //创建内部内,实现创建对象
    private static class StaticInnerClassStyleInstance{
        //定义常量保证对象唯一
        private static final StaticInnerClassStyle instance=new StaticInnerClassStyle();
    }

    //禁用构造器
    private StaticInnerClassStyle(){

    }

    //不需要使用同步,效率高
    public static StaticInnerClassStyle getInstance(){
        return StaticInnerClassStyleInstance.instance;
    }
}

到此,java中单例模式经典代码案例已完成。有问题随时评论,觉得有用的话记得点个赞哦! 在代码实例中学习知识,学和用兼备,想要长期学习的小伙伴记得关注哦!
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/358548.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号