今天主要写一个单例模式的常用四种写法(懒汉,饿汉,懒汉加锁,枚举)

今天主要写一个单例模式的常用四种写法(懒汉,饿汉,懒汉加锁,枚举)

设计模式有23种,常听到的有单例模式。
单例模式(解释):①模式:pattern:有规律的模式,或根据某种需求创造出的某种东西。
单例模式:一个类只有一个实例。
(一个软件只能打开一个窗口)(枚举是天生的单例模式<存放在同一个地址下 >)

注: (线程不安全,多线程可以创建两个线程)

实现:
1:不能被外部创建(private)
2:禁止外部访问()
3:内外部保证一致

懒汉单例模式:没有用就不初始化,要用时,才初始化
懒汉式单例步骤:
1:静态属性,存储单例(所有类共享同一份数据)
2:私有的构造器,限制外部不能访问
3:静态方法,获取单例
4:返回单例名

public class Slacker {
/*
 * 懒汉单例模式:没有用就不初始化,要用时,才初始化
 */
​
private static Slacker instance = null;//定义
private void slacker() {
}
public static Slacker getInstance() {
if (instance == null) {
        instance = new Slacker();//初始化
    }
    return instance;
}}

饿汉式单例步骤:

1:相关属性初始化
2:开始时就创建实例
3:返回单例名

public class Hungry {    
/*    
饿汉单例模式:在还没有实例化的时候就初始化
 */
private static final Hungry instance=new Hungry(); //初始化
private void hungry() {    
}
public static Hungry getInstance() {
​	return instance;		
}}

懒汉加锁:

在if前后加锁,第一个锁表示一次运行一个,第二个加锁表示没有实例就实例化

/*
加锁的懒汉模式
 */
public class Lock_up {
private static Lock_up instance = null;    
private void Lock_up() {
}
private static Lock_up getinstance() {    
synchronized (Lock_up.class) {
​	// 加锁保证一次运行一个
​	if (instance == null) {
​		synchronized (Lock_up.class) {
​			// 加锁保证instance为空时,创建一个实例
​			instance = new Lock_up();
​		}
​	}
}    
return instance;    
}    }

枚举单例模式:枚举表达的是:

一个集的枚举是列出某些有穷序列集的所有成员,简单来说就是每个都列举出来。

枚举单例:

实现单例的核心在于private私有化类中的构造方法,在枚举中的构造方法必须是私有的,这就为枚举来实现单例奠定了基础。

/*
枚举单例:枚举的创建是通过JVM保证,不会出现并发,
构造器自动私有,外部本鞥访问,能能通过引用的方式。
例如:一周有七天,可以通过枚举的方式实现他。
  */
 public enum Enum {
 INSTANCE;
 public void dosomething() { ​	
 	System.out.println("dosomething");
 }
 public static void main(String[] args) {
 	Enum.INSTANCE.dosomething();
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值