博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第3条:用私有构造器或者枚举类型强化Singleton属性
阅读量:7042 次
发布时间:2019-06-28

本文共 650 字,大约阅读时间需要 2 分钟。

Singleton是指仅仅被实例化一次的类。通过被用来代表那些本质上唯一的系统组件,比如窗口管理器或者文件系统。

 

在http://www.cnblogs.com/13jhzeng/p/5256424.html中,提到了不同情境下Singleton多种实现方法。

 

使用单例类的方法来实现的Singleton在让其变成可序列化(Serializable)时,仅仅在声明上加上“implements Serializable”是不够的,为了维护并保证Singleton,必须声明所有实例域都是transient瞬时的,并提供一个readResolve方法,否则每次反序列化一个序列化实例时,都会创建一个新的实例。

private Object readResolve() {    return INSTANCE;}

 

从Java 1.5起,实现Singleton,只需编写一个包含单个元素的枚举类型:

public enum Elvis {    INSTANCE;    private Elvis() {    //枚举类型默认的构造器就是private的        System.out.println("Singleton");    };}

这种方法实现起来更加简介,无偿地提供序列化机制(无需去实现Serializable),即使面对复杂的序列化或者反射攻击的时候,绝对防止多次实例化。

 

转载于:https://www.cnblogs.com/13jhzeng/p/5605838.html

你可能感兴趣的文章
去掉UIPickerView的弯曲弧度
查看>>
使阿里oss实现前端代码自动上传
查看>>
JavaScript中的作用域和闭包
查看>>
暴力破解WiFi密码
查看>>
Zend Studio使用教程:使用Zend Studio和Zend Server进行根本原因分析 (二)
查看>>
golang的fmt包String(),Error(),Format(),GoString()的接口实现
查看>>
Java技术转(兼顾)产品经理——读《快速转行做产品经理》有感
查看>>
成为优秀Java开发人员的10件事
查看>>
Kali Linux安装教程
查看>>
Android缓存处理
查看>>
JavaScript 数据类型检测终极解决方案
查看>>
年赚百万游戏主播!玩转Python后:几行代码轻松“吃鸡” 附源码
查看>>
【python】使用简单的python语句编写爬虫 定时拿取信息并存入txt
查看>>
卡拉OK歌词原理和实现高仿Android网易云音乐
查看>>
小编带着小白看springboot源码6
查看>>
javascript原型链
查看>>
Re: 从零开始的【comic spider】《最简单的实现》(上)
查看>>
Java 单例模式学习理解
查看>>
ios创建可拖动的视图
查看>>
Linux常用的基本命令12
查看>>