A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 路途 中级黑马   /  2015-7-11 16:47  /  398 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 路途 于 2015-7-11 18:55 编辑

单例设计模式

    单例设计模式:解决一个类在内存中只存在一个对象。保证唯一性:
        1.先控制禁止其他程序建立该对象。
        2.还为了其他程序可以为访问该类对象,在本类中自定义一个对象。
        3.为了方便其他其程序对自定义对象的访问,可以对外提供一些访问方式。
对应操作:
        1.将构造函数私有化。
        2.在本类中创建一个本类对象(私有并且static)。
        3.提供一个方法可以获取到该类对象。
构造函数私有化:
      私有构造函数只能在函数内部调用,外部不能实例化,所以私有构造函数可以防止该类在外部被实例化。

单例化有两种方式:饿汉式和懒汉式
    饿汉式:先初始化对象 ,A类一进入内存便建立一个对象
        class A {
        private A(){}
            private  static A s = new A();
            public static A getInstance(){
            return s;
        }
    }
    懒汉式:对象是方法调用时,才初始化:
    class A {
        private static A s = null;
        private A(){}
        public static A getInstance(){
            if(s==null)
                s = new A();
            return s;
         }
    }
补充(多线程部分内容):
    单例模式就是为了使用这个对象,那么一般使用饿汉式,且安全。
   
单例设计模式中懒汉式:延迟加载。        在多线程访问是会出现问题,会出现效率低下。使用双重否定来解决(减少锁的判断次数)。
    synchronized  同步。懒汉式加入以后比较慢。
    if(s == null){
        synchronized(A.class){
            if(s == null)
                {
                s = new A();
            }
        }
    }








0 个回复

您需要登录后才可以回帖 登录 | 加入黑马