前言:前几天,老师上课讲解了单例模式,想了想理解还不够深入,写篇文章整理一下,希望有更深入的理解。
本人之前在学习oc,java也只是上课的时候学的,平时也没有特别的去学习,所以本文由理解错或者写错的地方请谅解,也欢迎相互交流,学习。
单例模式
特点:
1.单例类只能有一个实例。
2.单例类的实例只能由自身创建。
3.这个实例必须被全体对象所访问。
通俗的讲,单例类只能实例化一次,之后再实例化也不会创建新的实例,还是之前创建的实例。那怎样的程序是用单例模式写的呢?比如说 Windows里的任务管理器,它只能打开一个,不能打开多个,因为只能实例化一个对象,创建一个窗口。(都是老师说的!~~)
java中单例模式的几种写法
1.简单的写法
public class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance = null){
instance = new Singleton();
}
return instance;
}
}
这种是老师课上讲的,后来我参考了些资料,发现这种写法是不安全的,线程不安全,所以不是很推荐这种写法。但是这种写法有一个好处可以lazy loading(延迟加载) ,什么是延迟加载,就是类的实例化并不是在类装载的时候loading的,而是在调用getInstance的时候loading的,意在需要loading的时候loading。
暂时写这么多。。日后补充~~~~