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

    特点

    解决一个类在内存中只存在一个对象

    保证对象唯一

    1、为了避免其他程序过多的建立该类对象,先禁止其他程序建立该对象
    
    2、为了让其他程序可以访问该类对象,可以在本类中自定义一个对象
    
    3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
    

    体现方式

    1、将构造函数私有化
    
    2、在类中创建一个本类对象
    
    3、提供一个方法可以获取到本类对象
    

    当需要将事物的对象保证在内存中的唯一性,就可以将以上三步加上

    第一种体现形式(饿汉式)

    先初始化对象
    Single一进内存,就已经创建好了对象

    class Single {
        private Single() {}
        private static Single s = new Single;
        public static Single getInstance() {
            return s;
        }
    }
    
    class Demo {
        public static void main(String[] args) {
            Single ss = Single.getInstance();
        }
    }
    

    第二种体现形式(懒汉式)

    对象的延时加载,方法被调用时,才初始化对象
    Single进内存时,对象还没有存在,只有在调用getInstance方法时,才建立对象

    class Single {
        private Single() {}
        private static Single s = null;
        public static Single getInstance() {
            if(s == null) {
                s = new Single();
            return s;
            }
        }
    }
    
    class Demo {
        public static void main(String[] args) {
            Single ss = Single.getInstance();
        }
    }
    

    原则:定义单例,建议使用饿汉式
    面试时,一般面试懒汉式,处理线程的同步问题

  • 相关阅读:
    SCUT
    模板
    重链剖分
    树的重心
    SCUT
    SCUT
    SCUT
    SCUT
    SCUT
    SCUT
  • 原文地址:https://www.cnblogs.com/rancvl/p/5460634.html
Copyright © 2011-2022 走看看