单例模式是一种最常见的设计模式。
使用场景:确保某个类有且只有一个对象的场景。
实现单例模式的几个关键点:
1、构造函数不对外开放,私有构造方法。
2、通过类方法或枚举返回单例对象;
3、确保单例对象有且只有一个,尤其在多线程的环境下;
4、确保单例对象在反序列化时不会重新构建对象;
由于单例模式很常见,网上都能找到各种写法,本文只总结,不在给出具体的代码,后面又连接供参考。
Java单例模式的几种写法:
1、饿汉式
2、饿汉式(静态代码块)
3、懒汉式(线程不安全)
4、懒汉式 (线程安全)
5、双重校验锁 (懒汉式 线程安全变种)
6、静态内部类
7、枚举
8、使用容器实现单例
注意:1、饿汉式和静态内部类的实现方式区别和使用场景。
2、如何避免反序列化 readResolve();
Objective-C单例模式的几种写法:
1、不使用GCD
2、使用GCD
注意:1、线程安全
2、避免alloc 和 copy
当我们调用alloc函数时我们进一步会调用allocWithZone方法
3、MRC 下的引用计数和子类化 NSAllocateObject([self class],0,NULL);
参考:
Java实现代码
1、http://www.cnblogs.com/itliuchao/p/4497778.html
2、http://blog.csdn.net/u012507894/article/details/50541108
OC实现代码
3、http://www.jianshu.com/p/6b012ebc10fe
4、http://www.jianshu.com/p/4f49c5c81021
网友评论