zoukankan      html  css  js  c++  java
  • 设计模式——单例模式

    作者:haibiscuit

    时间:2019:3:13

    您的star是我不断前行的动力

    https://github.com/haibiscuit

    转载请说明出处

    :单例模式

        定义:

            保证类只有一个实例。

        优势:

            1.Spring中默认的创建类型为单例

            2.在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。

            3.避免对资源的多重占用(比如写文件操作)

        示例:

        //示例一

        // Effective Java 第一版推荐写法,主要是final可以缓存实例

        class Singleton {

            private static class SingletonHolder {

                private static final Singleton INSTANCE = new Singleton();

            }

            private Singleton (){}

            public static final Singleton getInstance() {

                return SingletonHolder.INSTANCE;

            }

        }

        //最好的写法

        //这里主要好的原因是volatile,可以避免多线程带来的不安全(当然概率很低)

        class Single4 {

            private static volatile Single4 instance;

            private Single4() {}

            public static Single4 getInstance() {

                if (instance == null) {

                    synchronized (Single4.class) {

                        if (instance == null) {

                            instance = new Single4();

                        }

                    }

                }

                return instance;

            }

        }

        总结:

        Spring默认的创建对象的姿势就是单例模式,但是使用单例模式需要着重考虑的是资源共享的线程安全问题。

  • 相关阅读:
    Server.MapPath()
    正斜杠(/)与反斜杠(\)总结
    ASP.NET DridView 显示行号
    Win7 64位 IIS未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
    DataTable中Rows.RemoveAt(i)和Rows(i).Delete的区别
    字段与属性的区别
    VS 创建assemblyinfo项目信息文件
    GridView的RowDataBound事件 获取当前行的某个数据列
    ASPxHtmlEditor上传重命名的方法
    关于ModalPopup控件不能调用CS事件代码的问题
  • 原文地址:https://www.cnblogs.com/haibiscuit/p/10526873.html
Copyright © 2011-2022 走看看