几种常见的单例模式的写法(内容摘自网络)

(一)简介

单例模式是一种常见的软件设计模式,顾名思义,他对外只暴露一个实例对象的引用,有一个私有的构造方法,一个公共的对外获取该类实例的静态方法。

(二)写法

1.静态常量

public class Demo{

    private final static Demo sInstance = new Demo();

    private Demo(){

    }

    public static getInstance(){

        return sInstance ;

    }

}

优点:写法简单,类加载的时候实例化就完成了,外部直接获取就行,避免了线程同步。

缺点:同样的,类加载时就完成了实例化,没有做到懒加载,如果该实例从未使用,则造成资源浪费。

2.静态代码块

public class Demo{

    private static Demo sInstance;

    static{

        sInstance = new Demo();

    }

    private Demo(){}

    public static Demo getInstance(){

        return sInstance;

    }

}

优缺点同上。

3.同步代码块

public class Demo{

    private static Demo sInstace;

    private Demo(){}

    public static Demo getInstace(){

        if(sInstace == null){

        synchronized(Demo.class){

            if(sInstace == null){

                sIntance = new Demo();

            }

        }

        return sInstance;

        }

    }

}

4.静态内部类

public class Demo{

    private Demo(){}

    private static class DemoInstance{

        private static final Demo INSTACE = new Demo();

    }

    public static Demo getInstance(){

        return DemoInstance.INSTACE;

    }

}


参考:https://www.cnblogs.com/zhaoyan001/p/6365064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值