温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
Java设计模式之访问者模式,我们来看一下。我们还是先提一个需求。这是一个测评系统的需求。现在呢,我们要求这样子一件事情,说我们把人呢,把这个观众吧,我们把这个观众好吧,这样写。把观众。我们把这个观众呢,分成男人和女人,对歌手进行进行这个测评,当看完某个歌手的表演以后呢,得到他们对该歌手的不同评价。那么评价呢?我们有目前有两种,要么认为这个人唱的很成功,就是。通过。或者是失败就让他不过对吧,假如,假如说我们有这么两种不同的人,对。一个歌手进行评价,那么我们评价有成功和失败,好,那现在大家想对于一个传统方案,你会怎么去设计呢?一般的人呢,会这么去设计,说我这里有一个person。
01:05
对吧,然后呢,下面我有man和woman。然后呢,我在这里判断,如果这个男的他认为成功,接下来我加一个if else。对吧,如果他选择的是成功,我们就把这个成功的牌发给他,如果是失败。我们就把失败的牌发块,这个女的呢?也是一样。那大家想哈。如果我们按照这种继承的方式来做,他的问题是在什么地方呢?我们来分析一把。如果说我们这个系统比较小,那还是OK的,但是考虑到系统会增加越来越多的新的功能,对代码修改会比较大,违反OCP原则,为什么会违反OCP?大家想,假如说我说,假如我们再来一个评价。呃,比如说我们有成功失败这两种评价之外呢,我们再加了一种评价。这种评价呢,我们叫做什么呢?还OK啊,就是待定,比如说我们说这个人还有一个评价叫待定,假如啊。
02:08
大家想。如果说你这儿写了一个待定。这么。一个新的新新的评价,那要想一旦有待定,那就意味着man和woman他的这个代码都要进行修改。是不是这样的同学们,因为你原先是按这种分支控制的吗?那就如果是成功,我就怎么怎么样,如果是失败怎么样,再如果是待定,我又怎么怎么样。我又发这个牌子。是不是这样子的。那也意味着我们的man和woman要进行改进,那大想我们这个人,我们观众除了男人还女人,是不是有时候我们还要分类,比如还有小孩?对吧,男的里面呢,我们再分这一个青年中年和老年,我是歌手不就让不是不就是这样区分的吗?那如果按照这种方式来的话,那就改动就更大了。是吧,所以说我们这种模式虽然是可以的,但是呢,如果我们增加新的这个人的类型,或者是管理方法,或者是我们不同更多的评价,那么这个时候呢,就不好管,不好做了,因此传统方案主要的问题是一个是OCP原则,而且呢不好不利于维护。
03:21
对,不利于维护。好的,那这个就是我们提出的问题,以及传统方案的分析。那既然这个。按照传统的方式不行,那么应该用什么呢?好,下面呢,我们就推出下一个就引出引出。我们需要的,我们会使用的新的一种对新的一种设计模式,什么呢?就是我们说的访问者模式。OK。好,那访问这个模式具体是什么?我们下一集为大家继续讲解。
我来说两句