这几天笔者刚开始看设计模式,这个东西虽然是一个比较抽象的东西,但是它更注重的是一种框架设计的思想,不只是Android,很多领域都会涉及到这个,感觉很重要。而且在Android中有很多类都是通过各种模式去实现的,也是为了以后能够更好地看懂源码和框架吧。
然而前几天在刚开始看单例模式的是就卡壳了-。+,原因是在看的时候,发现有很多涉及到的知识点已经忘记了,或者当时就没有好好的学,结果现在学设计模式的时候很懵逼。。。为此本人写了几篇文章,是在设计模式中运用到的但可能已经忘记的知识点(反正对于本人来说已经是忘记了0.+),当然这些文章会不断的更新的。
本片中可能涉及到的知识点:
设计模式前篇——多线程同步synchronized、volatile详解
单例模式介绍
首先简单介绍一下什么是单例模式,为什么要用这种模式。
我来举个栗子:
我们有一个类A,我们如果想要使用,那就直接new一个A出来吧。
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new A();
}
很简单,根本无难度,对吧。
假如说这个类A,是一个功能类的类(例如Android中布局加载器LayoutInflater),我们创建A出来只是为了实现一个功能,也就是说不管多少个A对象被创建出来,他们谁都能够完成这个功能,而且互不影响。你懂我意思吧。
这只是在main方法中创建了一个A对象然后使用,加入现在有1000个方法中需要通过A完成这个功能,如果说不是同时运行的还好,如果这1000个方法都同时创建一个A对象,要是所有的android程序都这么写,我估计手机内存扩展到10个G都不够用吧-。+。
上面这个案例,明确的阐述了单例模式的重要性,同时也说明了它的运用场景:
- 在程序中多处地方大量使用
- 被创建的多个对象都能够完成一功能,而且互不影响。
作用:为了节约内存开销,避免不必要的内存开辟。提高效率,提高资源利用率。
单例模式顾名思义,就是让这个类只产生一个对象。因为这种情况下需要这个对象的情况太多了,不如我就给你创建一个,这一个对象可以让全局都调用,反正一个和一百个都能完成任务,这样还节约了内存。
单例模式特点
一个类满足单例模式,主要有一下几个特点:
- 构造方法私有化
- 定义静态方法,且返回当前的对象
- 确保对象是唯一的!
- 确保在序列化和反序列化操作之后,保证还是一个对象
- 不允许被继承
前几点相信大家都能够看得懂,简单说一下就好:
因为只允许创建一个对象,那么我们在调用实例的时候肯定不会用到new方法去创建对象了。而是通过一个static方法,所以我们要保证在外部无法通过new方法去创建对象。而创建对象的过程,在类构造中或者在static方法中实现。
不允许被继承,这是一个标准的单例模式的规范,我们知道就好。
重要说一下第四点:关于序列化和反序列化笔者之前写过一篇文章,大家可以去看一下: