设计模式GOF(group of four)

本文详细介绍了单例模式的五种实现方式,包括饿汉模式、懒汉模式、双重检测锁、静态内部类及枚举单例,并对比了它们的特点与适用场景。

创建型模式:单列模式

单例模式:(保证一个类只有一个实例,如数据库连接池、servlet中的application、Spring的bean、struts1......)

1.饿汉模式(线程安全,调用效率高,不能延时加载)

  private  A(){};

private static A a = new A();//只初始化一次,但可以改变属性值,属于类共有

public static A getInstance() {

return a;

}

2,懒汉模式(资源利用率高,延迟加载,真正使用时才加载)

private  A(){};

private static A a ;

public static synchronized A getInstance() {

if(a==null) {

a = new A();

return a;

}

3.双重检测锁(不用在方法前同步,只有第一次调用时才同步)

private  A(){};

private static A a ;

public static A getInstance() {

if(a==null) {

A a1 = null;

synchronized (A.class) {

a 1= a;

if(a1==null)

synchronized (A.class) {

if(a1==null) {

a1 = new A();

}

}

a =a1;

}

}

return a;

}

4.静态内部类(不会立即加载对象,初始化类是不会立即初始化内部类,只有调用才加载)

private  A(){};

private static class As {private static final A a = new A();}

public static A getInstance() {

return As,a;

}

5.枚举单列(枚举天然是单例的,没有懒加载,枚举元素是单列,可以防止反射和反序列化)

a;

puvblic void operation() {........}


       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值