00:01
小猿模式的注意事项和细节,我们看一看。那么响应模式我们可以这样理解想,就是共享源就是对象,前面说过了对吧?系统中有大量的对象,而这对象呢,消耗大量的内存,并且对象的状态大部分可以外部化时,可以选用响猿模式。那么用一个唯一标识码判断,如果内存中存在这个地方,我们是不是就是缓存池的概念,就说用一个唯一的标识码判断一下,在内存中有就返回。这个标识码对应的对象如果没有,我们就创建一个新的把把它放在这个词里面再返回,所以说这个时候呢,我们经常会使用哈map或者哈table来做这个事情,想模式大大的减少了对象的创建,降低了程序内存的占用,提高效率。还有一点呢,想源模式提高了系统的复杂度,这点没有办法。为什么这么讲?大家还记不记得我们说前面有一个网站A网站A用户用了,如果我要给B用户用,我直接把这个A用,把这个网站拷贝一份给他,然后修改。
01:08
实际上这样子来说呢,操作起来会比较简单,就是大家会觉得比较容易。因为我。我我会比较独立嘛,但是呢。这个响源模式呢,如果你用的话,它会提高系统的复杂度,主要的问题是在于需要我们程序员去区分哪些是内部状态,哪些是外部状态,因此呢,这个选元式要有选择的使用,而外部外部状态呢具有固定化,不应该随着内部变化而变化,所以说这样子的好,那么这就是我们使用选用模式需要注意的地方,第四,第六一个使用响用模式时,要注意划分内部和外部状态。而且呢,需要有一个工厂内加以控制,就是前面我们说工厂内来控制,一般来讲工厂内里面呢,不会出现这个外部状态,一般是内部状态,在工厂内里边响要模式,今年的应用场景就是需要缓冲池的缓像缓冲池或者是缓冲啊,缓冲层的这么一种应用,比如string,常量词或者是数据库。
02:07
连接词对吧?好,现在呢,我们把刚才讲的想约模式的内容进行一个简单的梳理,快速的梳一下。我们看一下我们是怎么来讲解享乐模式的屡屡思路。好往下走,那那这里面我们插入一个分页符,现在讲的是想圆模式。OK。那像园模式我们是怎么来讲讲的呢?首先我们仍然是提出了一个需求。引起大家对这个问题的思考,是不是我们说现在呢,有一个外外包的项目。外包项目是一个网站的项目,项目呢大体相同,大体项目,但是呢有微小的区别。对不对,有些人喜欢这种形式,有些客户喜欢那个形式,怎么办呢?好,我们就提出了一种传统的大家比较容易想到的方法,干什么呢?就是复制粘贴,然后再修改就完了,所以说我们传统解决方案呢,是这样子的。
03:06
给他拿过来,传统解决方案我们是复制粘贴,然后呢分别定制。分别定制,但是这样子。啊,这个这个这这还有个示意图,也把它拿过来。对,就相当于说把它拷贝,然后再修改。思考起来会比较简单一点,对吧。但是带来的问题也是比较明显的,什么呢?性能问题,性能问题就是说性能问题还是比较严重,对不对,我把它分析出来了。那大家看具体来说它带来的问题有这么些问题。屡屡屡的思路。对吧,留下这个思路主要是就是说你有些其实没有必要每一个都创建一个,比如说我们前面举的最经典的一个案例就是网站,我们看这个网络下棋,你有一两个人在下,但是有100个有有1万个人在观看。
04:01
那你每个人都去搞一个棋盘,这样子,这个这个代价太高了,呃,甚至都撑不住,所以说想要模式呢,其实可以解决这种资源的浪费。那这个说完了功呢,我们自然就先对想猿模式做了一个基本的介绍,就说什么是想猿模式这样子吧,那想园模式我们具体来说有这么一些概念,四个概念捋一捋。好,就是这我们提到的四个啊四个点。好,这边有个经典经典的场景的一个一个图,我就不截了,就是像这种,呃,这个截截过来吧。就是说像这种字符串对吧。我们在Java里面用的字符串,其实它也是一个非常经典的一个响猿模式的应用。就是在我们字符串内容相同的时候,其实大家都指向同一块内存,内存空间共享这个数据。啊对,想约模式的一种使用,那紧接着我们又讲了想约模式的一个类图,就告诉大家想约模式它里面包含了几种角色,那这里呢,我们画了一个图,并且对这个图做了一定的说明,好写到这对。
05:11
对这个类图的一个说明。说明。OK,那具体来说我们怎么说的呢?在这里有这么几点整理,对不对?放这就可以了。对他的角色我们做了一些说明。没问题,紧接着我们既然明白了他的一些角色的职责,那下面呢,我们就来说了一下,内部状态和外部状态怎么去区分。因为内部状态和外部状态是我们在做响源模式必须分析出来的,就说如果你要对一个项目进行使用这个响源模式,你必须知道什么是内部状态,什么是外部状态,那么我们这里总整理了几点几几句话,大家看一下怎么说的呢?
06:03
来看这里哈,我这里说了一句话,内部状态呢。就是这样一个状态,内部状态,它指的是存贮在想元对象内部,并且不会随环境的变化而改变的这种。状态啊,这种信息就叫内部状态,那外部状态呢,它是对象以来的一个标记啊,标记它随环境的改变或改变,是一个不可共享的。不可共享,好,这是我们对他的一个说明,然后呢,这里我们就使用想约模式来解决了这个网站外包项目的一个案例,好,我们来看看他是怎么来解决的。屡屡的思路。首先还是老规矩,先对他做了一个说明。对不对,我们对他做了一个说明,就是诶这个地方就不要了。啊,这思路我们画了一个类图,类图拿过来在哪里呢?在我们这块fly weight里面画了这样一个图,描述了一下,就是它的类与类之间的关系。
07:09
然后有了这样一个关系图以后,是不是我们就用代码给大家走了一遍代码呢?因为文件比较多,所以说我还是用以前老规矩,直接把这一个文件夹给大家放到笔记里面就可以了。放这。OK,诶放到哪里呢?放到这儿。是不是这个道理,好放这就可以了。那代码这说完了以后,我们为了加深大家印象,我们又说了想约模式呢,在我们实际的JDK里边,其实也是用到了哪里呢?就是JDK里面我们去获取一个integer对象实力的时候呢,他在value of里面他用到了。那么我们来整理一下,具体来说这一个示意图我们拿过来哈。拿过来。就这个。是这样子吧,同学们好,这是我们的。
08:00
一一个截图说明,这边还有一段源码。代码说明,我把代码说明呢,也给同学们板述到这里,在哪里就在这。找到我们这个Fla位置,其实就在这小结了几点,我把这个代码呢给它整理到笔记中。大家以后复习的时候比较方便。好,放到我们表格里面就完事了,好,最后我们又对这一个想约模式它的一个注意事项和细节做了一些说明。就说想圆模式呢,它的难点在哪个地方?他的他的这个优势和缺点在什么地方,我们说了一下。有一点要跟他说明哈,响猿模式呢,它会提高我们系统的复杂度。他提高系统复杂度,就是因为你这个之间会有关联嘛,其实它在一定程度上增加了这个耦合性。不像我们原先讲的一个网站,我拿过来改。对吧,那个会简单,但是呢,他对我们这个资源浪费比较厉害,但是你如果用了想源模式呢,也要需要分离出这个内部和外部状态,那只要一分离,它就一定会有关联,有关联就会有耦合。
09:08
所以说我们在这个地方呢,一定要注意你到底要不要使用响猿模式。要考虑,综合考虑。要综合考虑,就是说如果它的内部状态和外部状态比较容易区分。而且他们相对来说呢,区分度还比较明显。对,这个时候你用响猿模式确确实效果很好,比如说你比如说我们最经典的大家想你在做,你在写一个网络游戏的时候,这个下棋,显然这个时候用响乐模式效果就很好,因为它这个颜色,它唯一变化的就是就是这个棋子的位置嘛,其他不需要变化,因此呢,这个这使用响乐模式相对于来说它的效果就会很好,再比如说像string常量,你就是内容相同。内容相同,只要内容相同,我就可以共享。是不是OK,那数据库连接池也是一样,我上来给我现在这个连接池里面创建一些需要我就给你,不需要就算了。
10:00
不需要我就,呃,不需要我就从这个链接里面拿一个不需要,不需要的话就放,这也不浪费。对不对,好,同学们,那关于响乐模式的一个使用呢,就给同学们聊到这里。
我来说两句