快捷搜索: 王者荣耀 脱发

简述单例设计模式的一些理解及代码实现

单例设计模式

从特征上讲: 1,单例类只可有一个实例 2,单例类需自己创建唯一实例 3,需要给其他对象提供这一实例

从作用和目的上来说: 保证在应用程序中,一个类只有一个实例存在

代码格式上来讲: 1,私有的构造函数 2,私有的静态的全局变量 3,公有的静态的方法

从形式上来说有以下几种: 懒汉式:使用的时候再实例化(延时加载) 代码实现 (线程不安全,但效率高) public class Singleton{ private static Singleton instance; private Singleton(){}; public static Singleton getInstance(){ if(instance==null){ instance=new Singleton(); } return instance; } } 线程安全的懒汉式 public class Singleton{ private static Singleton instance; private Singleton(){}; public static synchronized Singleton getInstance(){ if(instance==null){ instance=new Singleton(); } return instance; } }

饿汉式(线程安全,jvm启动,不论你使不使用都先实例化,写法简单,不用考虑多线程问题,但效率低) 代码实现: public class Singleton{ private static Singleton instance=new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; } }

双重校验锁 public class Singleton { private volatile static Singleton instance; private Singleton (){} public static Singleton getIntance() { if (instance== null) { synchronized (Singleton.class) { if (instance== null) { instance= new Singleton(); } } } return instance; } }

还有一种登记式单例类,因为不常用(ps:主要是我也不会),在这就不写了;

再随便说一下比较常见的应用场景: 常见应用场景多见于日志,应用配置,网站计数器什么的; 使用条件: 资源共享情况下,用它避免一些资源操作时导致的性能损耗和资源浪费

经验分享 程序员 微信小程序 职场和发展