美文网首页Java设计模式
设计模式:3-单例模式:singleton

设计模式:3-单例模式:singleton

作者: 大栗几 | 来源:发表于2020-05-21 12:44 被阅读0次

    文章来源本人的博客:http://codelifeliwan.github.io/ 转载请注明出处
    查看[设计模式]系列内容请点击:https://www.jianshu.com/nb/45937362

    定义和适用场景:

    单例模式又叫单态模式(singleton),当为了确保一个类只能实例化一个对象并且讲这个对象提供给全局使用时候使用此模式。

    代码演示:

    单例模式有两种:一种叫做饿汉式,就是在类加载的时候就进行实例化;一种叫做懒汉式,就是在类使用时才进行实例化(此处不关心)。饿汉式单例如下:

    package com.codelifeliwan.singleton;
     
    public class Singleton {
        private static Singleton m_instance = new Singleton();
     
        private Singleton() { // 此处构造方法是私有的,外界无法进行实例化,只能在此处进行实例化
        }
     
        public static Singleton getInstance() { // 外界访问的唯一接口,需要设置成静态方法
            return m_instance;
        }
     
        public void action() {
            System.out.println("This is an action.");
        }
    }
    

    单例模式优点:

    从内存方面:

    减少内存开销,特别是一个对象需要频繁得进行创建、销毁的时候

    减少系统性能开销,增加速度,当需要读取配置文件的时候不需要每次都读取,而是读取一次,永驻内存

    从复用方面:

    避免对一个资源的多重占用

    可以在系统设置全局访问点,优化和共享资源访问,例如可以设计一个单例类负责所有的数据表等映射处理

    单例模式缺点:

    无法创建子类,扩展困难

    与单一职责原则有冲突,一个类应该只实现一个逻辑而不关心它是否是单例的。

    单例模式应用和使用场景:

    在Spring注解中大量使用单例模式

    要求生成唯一序列号的环境

    在整个项目中提供共享访问点或者共享数据,确保线程安全

    创建一个对象消耗资源过多时使用创建单例模式常驻内存

    需要定义大量的静态常量和静态方法时,可以使用单例模式

    注意事项:

    使用单例模式时要确保类内的数据准确,因为类是不销毁的,那么类内的数据状态也是需要管理的

    每个JVM都可以创建一个单例类,当机器上有多个JVM时创建的有可能是多个单例类

    相关文章

      网友评论

        本文标题:设计模式:3-单例模式:singleton

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