设计模式——单例模式

 

作者: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默认的创建对象的姿势就是单例模式,但是使用单例模式需要着重考虑的是资源共享的线程安全问题。

posted @ 2019-03-13 21:53  haibiscuit  阅读(114)  评论(0编辑  收藏  举报