java 反射 单例类_java单例模式详解完美实现(包括反射破坏的防止和线程安全)

一.描述

Singleton(单例)是设计模式的一种,为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要用途是保证某个很占系统资源的类,在同一时间只能拥有一个的情况。

例如:一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;

一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。

二.单例模式的主要特点:

1.某个类只能有一个实例;

2.必须自行创建这个实例;

3.必须自行向整个系统提供这个实例。

三.简单的具体实现:

第一种:懒汉式 (线程不安全)

public class SingletonDemo {

private static SingletonDemo single = null;

//私有的构造方法,无法主动实例化这个类

private SingletonDemo(){}

//静态工厂方法 通过getInstance得到具体的单例对象

public static SingletonDemo getInstance(){

if(single == null){

single = new SingletonDemo();

}

return single;

}

}

第二种 懒汉 线程安全

package com.hjh.Singleton;

/**

*

* @author Administrator

* 懒汉式单例 线程安全

*把构造方法private 无法主动实例化Singletondemo类

*通过getInstance 实例化对象

*/

public class SingletonDemo {

private static SingletonDemo single = null;

private SingletonDemo(){}

//静态工厂方法

public static synchronized SingletonDemo getInstance(){

if(single == null){

single = new

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值