剑指offer之实现Singleton(单例)模式
来源:互联网 发布:精益数据分析 微盘 编辑:程序博客网 时间:2024/05/16 08:20
在面试的过程中,很多公司常考察单例模式,并且需要手写代码。
单例模式的特点:
1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
第一种:懒汉式单例模式
- //懒汉式单例类.在第一次调用的时候实例化自己
- public class Singleton {
- //私有的默认构造子
- private Singleton() {}
- //注意,这里没有final
- private static Singleton single=null;
- //静态工厂方法
- public static Singleton getInstance() {
- if (single == null) {
- single = new Singleton();
- }
- return single;
- }
- }
Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。但是,通过Java反射机制是能够实例化构造方法为private的类的,那基本上会使所有的Java单例实现失效。而且,它是线程不安全的。如果要把懒汉式用于多线程,有两种方式保证安全性,一种是在getInstance方法上加同步,另一种是在使用该单例方法前后加双锁。
第二种:饿汉式单例模式
- //饿汉式单例类.在类初始化时,已经自行实例化
- public class Singleton1 {
- //私有的默认构造子
- private Singleton1() {}
- //已经自行实例化
- private static final Singleton1 single = new Singleton1();
- //静态工厂方法
- public static Singleton1 getInstance() {
- return single;
- }
- }
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以是线程安全的。
0 0
- 剑指offer之实现Singleton(单例)模式
- 剑指offer(1):实现Singleton单例模式
- 剑指Offer算法题之设计模式的单例模式--面试题2:实现Singleton模式
- 【剑指offer】题2:实现单件(singleton)模式
- 剑指offer - 实现Singleton模式
- 剑指Offer算法实现之二:实现Singleton模式
- 剑指Offer学习之面试题2 : 实现Singleton 模式
- 剑指offer之面试题2:实现Singleton模式
- 实现Singleton(单例)模式.
- 设计模式之—单例模式(Singleton)-Java实现
- 设计模式之单例模式(Singleton Pattern)C++实现
- 设计模式之—单例模式(Singleton)-Java实现
- 剑指Offer 面试题2 : 实现Singleton(单例)模式——七种实现方式
- 剑指offer(1) - 实现Singleton模式
- 剑指Offer系列---(4)实现Singleton模式
- 剑指offer 2. 实现Singleton模式
- 剑指offer---实现Singleton模式(2)
- singleton模式 (单例模式C++实现)
- 编程之美1:那些关于1的个数的经典面试题
- 罗马数字--简洁版
- 读书笔记-《程序员生存定律》
- (总结)Nginx配置文件nginx.conf中文详解
- GET和POST在线测试
- 剑指offer之实现Singleton(单例)模式
- Mp4V2库编译及使用
- Activity, Service,Task, Process and Thread之间的关系
- OC内存管理总结
- Jxl读写Excel文件
- 数组的查找,插入元素保证数组有序
- FreeMarker 集合Map遍历
- 罗马数字
- U盘启动引导安装linux