单例模式(懒汉模式+饿汉模式)

1.Java单例写法

1.1懒汉模式

public class SingleTon {
    //由于对象需要被静态方法调用,把方法设置为static
    //由于对象是static,必须要设置访问权限修饰符为private ,如果是public可以直接调用对象,不执行访问入口
    private static SingleTon singleton;
    /**
     * 方法名和类名相同
     * 无返回值.
     * 其他类不能实例化这个类对象
     * 
     * 对外提供访问入口
     */
    private SingleTon(){}
    
    /**
     * 实例方法,实例方法必须通过对象调用
     * 
     * 设置方法为静态方法
     * @return
     */
    public static SingleTon getInstance(){
        //添加逻辑如果实例化过,直接返回
        if(singleton==null){
            /*
             * 多线程访问下,可能出现if同时成立的情况,添加锁
             */
            synchronized (SingleTon.class) {
                //双重验证
                if(singleton==null){
                    singleton = new SingleTon();
                }
            }
        }
        return singleton;
    }
}

1.2饿汉模式

public class SingleTon {
        /*饿汉式直接创建出一个实例提供一个方法供外界调用*/
    private static SingleTon singleton = new SingleTon();
        /*私有构造方法,外界不能new此类,限定只有一个入口可获得此类*/
    private SingleTon(){}
    public static SingleTon getInstance(){
        return singleton;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容