美文网首页
设计模式(二)-创建型模式-单例

设计模式(二)-创建型模式-单例

作者: guggle | 来源:发表于2019-09-29 11:48 被阅读0次

一、单例

        单例指的是整个业务中只有一个实例,这样做能节省内存空间,不用重复创建,使用方便。

        单例分为懒汉和饿汉模式,两种模式的代码写法均推荐写法二。

    1.懒汉模式

        懒汉代码写法一,如下:

public class LazySingleTon {

    private static volatile LazySingleTon instance = null;

    private LazySingleTon() {};

    public static synchronized LazySingleTon sharedInstance() {

        if (instance == null) {

            instance = new LazySingleTon();

        }

        return instance;

    }

}

        这种写法因为每回调用调用sharedInstance都需要同步线程,所以多线程大批量操作时会影响效率,所以我们推荐写法2,只有首次为null的时候才锁定线程,之后不为null时,不锁定线程,直接返回instance

public class LazySingleTon {

    private static volatile LazySingleTon instance = null;

    private LazySingleTon() {};

    public static LazySingleTon shareInstance() {

        if (instance == null) {

            synchronized (LazySingleTon.class) {

                if (instance == null) {

                    instance = new LazySingleTon();

                }

            }

        }

        return instance;

    }

}

    2.饿汉模式

        饿汉代码写法一,如下:

public class HungrySingleTon {

    private static final HungrySingleTon instance = new HungrySingleTon();

    private HungrySingleTon(){};

    public static HungrySingleTon sharedInstance() {

        return instance;

    }

}

        这种写法,因为采用静态常量的写法,在项目运行初期是一定会new个对象,占用了空间,可以采用内部类的静态常量的写法,这样可以在调用的时候才new个对象,可以节省内存空间。写法二如下:

public class HungrySingleTon {

    private static class HungrySingleTonHolder {

        private static final HungrySingleTon instance = new HungrySingleTon();

    }

    private HungrySingleTon(){};

    public static HungrySingleTon sharedInstance() {

        return HungrySingleTonHolder.instance;

    }

}

        以上所有代码均建议采用写法二,可以节省内存空间或减少内存支出~

相关文章

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • 开发之设计模式-单例模式

    设计模式 设计模式分为三大类:创建型、结构型、行为型在Java中有24中设计模式 创建型:单例 1、为什么用单例模...

  • 设计模式分类

    经典23种设计模式: 创建型设计模式: Singleton Pattern(单例模式) PrototypePatt...

  • Python 之单例模式

    简介:单例模式(Singleton Pattern) 是最简单的设计模式之一,属于创建型的设计模式。单例模式涉及到...

  • “Python的单例模式有四种写法,你知道么?”——孔乙己

    什么是单例模式 单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型...

  • S4. 单例模式

    单例模式(Singleton) 介绍 单例模式是创建型设计模式,即用于创建对象的设计。其能够保证当前系统仅存在一个...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • PHP设计模式—创建型设计模式

    ** 创建型设计模式 **: 单例模式(Singleton Pattern) 工厂方法模式(Factor Patt...

  • 【设计模式】创建型设计模式汇总

    创建型设计模式汇总 1. 单例模式 1.1 单例模式的定义 一个类只允许创建一个对象或实例。 1.2 单例模式的作...

  • 23种设计模式学习总结

    创建型设计模式 主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码合使用代码。 单例模式 单例模式用来...

网友评论

      本文标题:设计模式(二)-创建型模式-单例

      本文链接:https://www.haomeiwen.com/subject/xttfuctx.html