很多小伙伴,不知道设计模式是什么?
通常我们所说的设计模式是一种设计方案,是前人留下的经验及最佳实践。
想要学习设计模式,至少要把面向对象的基本结构全部了解。
设计模式,是建立在一定基础上的思维训练。
学习设计模式,要有面临痛苦的决心。
学会设计模式,对解决问题及对程序理解有更高层次的认识。
如果有这样的决心,那么下面我们就认识一下,它的真面目。
常说的设计模式是23种设计模式,分为3大类:
当然有一部分模式中,还有一些小的变化,在未来的持续更新中,我们会一一列举,并以代码为主,去学习设计模式。
上次咱们说了“抽象工厂模式”。今天咱们来说“单例模式”。
“单例模式”从字面上理解,主要是“单一实例”。也就是说,无论谁调用,无论在哪里调用,始终保持只有一个实例。
重点步骤:
看到上面的步骤,是不是觉得核心思路和“属性封装”的思路类似?
单例模式主要分类:
饿汉模式”主要意思是,利用静态变量实例化对象,利用方法返回当前所在类的静态变量。
而静态成员变量随着类的信息在程序结束前始终驻留于内存中,故而称为“饿汉”。如果单线程使用频繁用“饿汉模式”。
“懒汉模式”主要意思是,利用静态变量为空,利用方法判断是否为空,如果为空就实例化对象,不为空就返回当前对象。从而保持始终访问同一个对象。
“懒汉”不打不动,不调用没有对象,调用一次后,始终实用一个对象。无愧于“懒”这个字。通常单线程程序,用“懒汉模式”。
双重检索模式”是针对多线程环境的线程安全性,从懒汉模式中演变而来,实际上就是懒汉模式的升级,将懒汉模式的方法中加入“synchronized”。
“双检索单例模式”的写法变化:在“synchronized”之外和使用“synchronized”里都进行了“非空检查”,从而保证多线程环境下,始终保持一个实例化对象的建立。
很多小伙伴们记住了单例模式,但是不知道在哪里能用的到单例模式。就此问题说一句“了解其功能自然直到用在哪里”。
咱们假定一个场景需求:
学生会给学生放电影。
1、在放电影的过程中,始终有一台放映机在放映。
2、电影要一个一个播放。
3、学生操作放映机,学生可以换,放映机不能换。
控制一个功能类在整体的程序中,始终保持一个实例化对象使用。遇见类似“放映机”这种类的情况,会将其设置为单例模式使用。