设计模式之单例模式

单例模式:

定义:一个类只能有一个实例,并且自行实例化向整个系统提供该实例

实现

①构造函数私有化

②定义一个该类的静态私有对象属性

③提供一个静态的公有的方法用于创建或获取它本身的静态私有对象

java中实现单例模式的几种方式如下:

第一种:饿汉式,当类被加载时就创建该对象实例

class Singleton{
	private static Singleton singleton0bj=new Singleton();
	private Singleton(){
		
	}
	public static Singleton getInstance(){
		return singleton0bj;
	}
}
第二种:懒汉式,当第一次需要时才创建该实例

public class Singleton{

	private static Singleton demo=null;
	private Singleton(){
		
	}
	public static Singleton getInstance(){
		if(demo==null)
			demo=new Singleton();
		return demo;
	}
}

第三种:double-checked方式,支持多线程,可以避免非必要的对象锁定

class Singleton{
	private static Singleton Singletonobj=null;
	private Singleton(){
	}
	public static Singleton getInstance(){
		if(Singletonobj==null)
		{
			synchronized(Singleton.class){
				if(Singletonobj==null)
					Singletonobj=new Singleton();
			}
		}
		return Singletonobj;
	}
}

第四种:枚举方式

①枚举允许有自己的构造函数,并且只能是private

②枚举项默认是static final形式,使用前只能被构造一次

③枚举项INSTANCE的构造过程是线程安全的

enum Singleton{
	INSTANCE;
}

为了保证单例模式,单例类或其子类都不能实现cloneable或serialzable接口


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值