00:00
那单利模式呢,这两种我们就讲完了,讲完以后呢,要求大家呢下来呢要会写,暂时呢关于这个懒汉式这块呢,虽然是一个线程不安全的,但是呢大家呢也先会写,后边呢我们再改了以后呢,你在这个基础上呢,再做个调整,再记一下就行,目前呢,这两种呢都要求会写,那这个完了以后,后边呢,咱们这有关于这个这个单利模式的一个应用的一个说明,看这呢,首先是关于单利的个优点,这里提到了说由于单利模式呢,只生成了一个实例,那我就减少了系统性的一个开销,这个减少开销呢,不是说从这个sta利的角度说开减少开销了,是从这个单利的角度去说的,我们呢本身呢就没有必要去造多个对象,那这时候我们就造一个这呢,从这个角度来说呢,就减少了性能的一个开销说,当一个对象的产生需要比较多的资源时,比如说读取配置啊,产生其他的一些依赖对象时,我们可以通过在应用启动的时候呢,直接产生一个单例,永久的让它储存在内存当中。同时这个。
01:00
性能也更好,也会更好,直接呢,你想用拿回来去用,而不至于说呢,重新再帮你去从头去生成或者加载一个了,那么在我们这个API当中有一个类呢,这叫runtime,叫运行时。这个运营时的话呢,它就是一个典型的单利模式,我这有个截图,大家也可以直接来这去看ctrl shift t,我就输入呢叫runtime是一个类,点开它这里边我们呢,就把它的这个构造器呢私有化了,说don't let anyone else去实例化,我们这个class写的呢非常的清楚,然后接下来我们呢,去创建你当前类的一个对象。写哪写这了,私有的static,我们去创建了一个对象,创建完对象以后的话呢,因为你是个private的,我在外边呢还调不了,所以我们提供了一个方法,这个方法呢,也是个静态的,我们直接呢就这样写的,这是一个是不是一个这个恶汉式啊。
02:00
直接呢,这不就把这个对象造好了,盖的方法呢,直接就返回了恶汉式对吧?行,这呢就是一个具体的类了,嗯,具体它是什么意思呢?大家就先暂时的不用关注了啊,就是我们每创建的一个Java应用程序的话呢,都需要有一个运行时这样的一个环境啊,就过了,我们接下来呢,来看一下关于这个单利模式的一些具体的应用场景,大家呢,有这样的一个概念,就是我们在做一些事情的时候呢,就需要考虑把当前这个类呢,设置成是一个单例模式的,比如说叫网站的计数器。网站计数器,我们来计录计算一下这个你当前网站的一些流量信息啊,PVUVIP等等,那这时候的计数器呢,我们通常都是个单立的,就这一个对象就行,然后让这一个对象呢去操作啊,这样接下来应用程序的叫日志应用,就是我们也是通常使用单立模式来实现,因为共享的这个日志数据呢,我们让他一直处于一种打开状态,就是日志文件,这个日志的这个数据呢,可以不断的去进进行一个修改,那我们这时候呢,只要一个实例就可以了,不要再去造多个实例去做这个事情。
03:06
接下来叫数据库连接池,我们后边呢,讲数据库的时候呢,就会讲数据库连接池。数据库连接池是什么意思呢?简单说一下啊,就是我们回头呢,要想去操作数据库,咱们首先得获取数据库的连接,就是说你要上网,你得先得有这个联网的功能,你得登上网才可以,你想跟一个女生去聊天,你得先拿到人家微信,人家加你好友了,先建立连接,就这个意思,我们要想操作数据库,得先建立数据库的连接,那么这个连接的话呢,又得需要你去造这个对象啊,做一些密码啊,用户名啊,一些校验啊等等,那此时呢还挺慢,所以说呢,我就提前先造了一个池子,这个池子里边呢,就把这个连接呢,提前都造好了,造了很多的连接,比如说我这儿呢,就造了这八个啊,九个,十个,我这里边儿呢,就放了十个连接,那就意味着呢,我们最大呢,要求十个人可以同时呢去连接我这个数据库。
04:03
最大只有十个人,因为我就造了十个连接,这里边儿提到就是我们这个池子。是个单立的就池子你就造一个就行,你要说十个不够呢,那你就来20个,你别这样整说这十个,然后再造个池子,这个池子也是十个,就不会这样去做了,我们就只会造一个池子,这个池子呢,相当于就是一个单立的啊,因为造池子的话呢,它也很消耗这个资源,所以最好呢,我们就提前把这个池子呢先造好,那你要十个不够,你可以后边我们再指定一些,十个不够的话呢,我们再可以再扩容五个,又不够可以再扩容五个,我指定一个上限,上限呢比如说是1000个。就是到1000的时候呢,就不能再扩了,我们可以针对这里边儿这个连接数进行一个操作,但是这个池子呢,就一个,这也就意味着它是一个单立的。再接下来在项目当中读取配置文件的类,读取配置文件的类,这呢我们又需要去这个加载一些配置文件的信息啊等等,我们这时候呢,就没有必要呢去造多个对象了,我就造一个对象,只要你需要去读配置文件,我就拿你唯一的这个对象呢去读就可以了,这呢也可以做成这个单立的,然后下一个叫application,也是单立的一个典型应用。
05:15
这个application呢,其实反馈到我们程序当中,它其实是个类。就比如说大家比较目前形象呢,就是大家用的这个手机的应用程序了,大家呢,你这个应用程序呢,刚装好以后,它后台的一个进程呢,其实没有开,你点一下呢,这个应用程序呢,就运行起来了,这个应用程序呢,就只要它运行起来。它其实就有一个进程啊,这个进程的概念我们还没有讲啊,就大家也能稍微理解一下,像这里边儿呢,这都是进程,一个进程呢,大家可以暂时呢理解为就是一个应用程序了啊,就像大家呢,你手机上呢,具体的一个APP,你点开它,它就会加载内存,它就开始运行了,这其实就是一个进程了,那么在整个这个应用程序执行的过程当中,就只会有一个类叫做application。
06:00
就是你这个应用程序的话呢,就存在唯一的它你要是想用当前这个应用的一些信息,你就去调这个application就完了,但是这个时候呢,Application不是你用的时候,每次用它去new个application了,它就一个,所以呢,这个application呢,也是一个单立的,你要用直接呢调application的那个静态方法,你拿到这个实例,然后这个实例里边你去调application里边的一些方法,哎就可以了,这呢也是单例的,后边呢,稍微形象一点,像我们这个Windows的这个任务管理器,Windows的这个回收站也都是单立的,只有一个任务管理器,只有一个回收站。啊,这样好,那么我们这单例呢就讲完了,后续的话呢,大家在应用程序当中呢,涉及到单立的时候,你去想一下,我们为什么要把它设置成这个单立的,那么类似的呢,其他的设计模式呢,大家也可以同样的方式呢去学习,只不过呢,暂时呢,咱们积累的代码还有限啊,很难呢,把其他的这些设计模式呢,都给大家讲透啊,后边的话呢,我们遇到了再给大家去讲啊,这样。
我来说两句