在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.一种软件设计模式; 2.定义:单例对象的类只允许一个实例存在; 3.应用背景: 许多时候只需要拥有一个的全局对象,这样有利于协调整体的行为。 比如在某个服务器中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一获取。 4.组成部分: 1.构造方法为私有,这样保证唯有通过该类提供的静态方法获得该类的唯一实例。 2.获得该实例的方法(通常使用getInstance这个名字),为静态。 5.注意事项: 1.多线程避免两个线程同时调用,那么它们同时没有检测到唯一实例的存在,从而同时各自创建一个。这样违背单例模式的唯一原则。 6.写法例子: 1.饿汉式(静态常量): public class Singleton { private final static Singleton INSTANCE = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return INSTANCE; } } 2.饿汉式(静态代码块): public class Singleton { private static Singleton instance; static { instance = new Singleton(); } private Singleton() {} public static Singleton getInstance() { return instance; } } 3.双重检查: public class Singleton { private static volatile Singleton singleton; private Singleton() {} public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } } 4.静态内部类: public class Singleton { private Singleton() {} private static class SingletonInstance { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return SingletonInstance.INSTANCE; } } 7.适用场合: 1.需频繁的进行创建和销毁的对象; 2.创建对象时耗时过多或浪费资源过多; 3.工具类对象; 4.频繁访问数据库或文件的对象; |
请发表评论