00:00
那这个接口隔离原则怎么来隔离呢?我们先把这个思想来说一下。对传统方法问题和使用接口改进。接口隔离原则进行改进。类A通过接口一。INTERFACE1依赖于B,类C通过INTERFACE1依赖于B。如果接口INTERFACE1对于AB来说不是最小接口,那么B和D必须去实现他们不需要的方法,这就是问题。那现在我们把INTERFACE1车拆成几个独立的接口。类A和类C分别与他们需要的接口建立依赖关系,这就要使用到隔离好了,现在根据interface出现的方法呢,我们根据实际情况把它拆成三个接口,来,同学们看一下我的类图。我们画第二个类图,注意听讲。那现在这个第二个类图应该怎么画呢?来吧,第二个类图。我现在要开始进行拆解了,好吧,首先仍然把这个接口拿过来。
01:05
这仍然是我们的INTERFACE1这个接口。在这里面呢,我们就写一个方法。没问题吧?好,我们再建一个接口,INTERFACE2。这个INTERFACE2里面呢,我们再写两个方法,一个是OPERATION2。对不对,再来OPERATION3。把它拆开了。我们再建一个接口,接口隔离吗?这是我们第三个接口,注意听这个接口里面呢,也有两个方法,一个是operation。OPERATION414OPERATION5看清楚了。好的,现在呢。大家看到,大家看到。我们这个A类。还是在这里。我们这个C类还是在这里。
02:03
我们这一个B类。放这,我们的D类放这儿,那这个关系按照接口隔离应该怎么走呢?大家刚才已经看到了,我们A类其实是通过接口去依赖B,但是只用到它的123这个方法,那也就是说我们这个B类其实它只需要去实现。这个接口和这个接口就可以了。然后呢,我这个A就是我这个A类只需要跟INTERFACE1和INTERFACE2。发生一个关联即可。要发生一个依赖就可以了,同样我们这个D类呢,它要去实现。INTERFACE1这个接口它还要去实现INTERFACE3这个接口,那INTERFACE2我们这个D就没有必要再去实现了,为什么?因为这个C类。
03:03
它通过这个接口跟这个D发生一个依赖关系呢,它并不需要去用到二和三的方法,所以说这个D类也就没有必要去实现二三,这就实现了我们接口的隔离。那也就是说这个C呢,要跟INTERFACE1发生关联,C和INTERFACE3发生关联,同学们看这一种设计方案就是我们接口隔离,那现在呢,我们用代码快速的给大家写一下。那走一个。我呢,新建一个包包,在这里面新建一个包,取个名字叫improve。就是改进,那改进的时候呢,我们就把里面这个代码拿过来改一下就可以了,好吧,就这样子的。先保存一下。啊,这边有一个类,这个类呢,我们写的差不多了,我就拿过来用一用,Test一下。好,然后呢,我把这个稍微改一改,大家看我怎么改哈。朱婷,首先interface这个接口先分成三个,这是第一个接口。
04:06
把二和三这两个方法拿出来。Interface interface2。这里面呢,我们放两个方法能看懂吧,Interface interface3。这个INTERFACE3里边呢,把这个四和五方法反过来就隔离了,也就是现在我有三个接口。这是第二个接口,这是第三个接口,看懂。不难吧,同学们。那现在我们这个B,大家看B,它其实呢,并不需要实现四和五拿掉就可以了。同时他还要去实现INTERFACE2就可以了,O了。保存一下。OK,我们看这边有什么问题。
05:02
必须实现是。必须实现。哦呃,我们看这个地方interface哦,INTERFACE1这个也不要了,这两个方法我怎么还留着呢,不要了啊不要了。也就是说,Interface里面只有一个方法。INTERFACE2里面有两个方法,INTERFACE3里面也有两个方法,明白了好,同样D这个类呢,它要去实现INTERFACE1和interface解压三。那这样子呢,他就不需要再去实现二和三这种方法。对不对,是这样子的吧。好,那接着我们继续往下看A这个类。A这个类。因为这个A这个类里边呢,它是通过INTERFACE1,通过INTERFACE1和INTERFACE2了。去依赖B这个类,那这里。
06:00
哦,我们看看这边这个就应该变成几了呀,变成二了,是不是依赖于INTERFACE2这个这个接口了。里面呢,仍然是掉它的二和三,这个方法不需要改变。同样我们这个C这个类,它去通过INTERFACE1和interface几呢三依赖我们这个D类也会用到四和五,那这样子的方法呢,也很简单,这边我们就改成什么呀,INTERFACE3。这边改成inter,三大们就喜欢了。这个就是按照接口隔离原则来处理的,我们来用一用。那同学们来使用一把。使用一把怎么用呢。来,我们661个A。对吧,我们六一个A。AA。A类,那A类里面呢,我们调一下方法a.depends。我们六一个B。看到没有,也就是说这个时候A通通过这个接口,因为你INTER1里面是按这个接口来接收的嘛,那么把这个B放进去,这个就叫依赖,这句话怎么理解啊,这个就叫我们的这个A类,注意听这句话A类。
07:14
通过接口去依赖。I去依赖哪里呢?依赖B这个类。哦,OK,就这意思,同样的道理,我们还要去第二个方法对不对,也是一样的,那么第三个方法也是一样的,我们运行之,我们来运行一下。看看对否?运行一下。好,我们运用起来,我们看看对不对呢,发现B实现了。呃,他去掉的是B实现的123,这个方法完全的正确。那同样道理,我们再来六一个B类啊,C类了,C类。S,对不对。C写个CC等于C怎么去用呢?C点。
08:05
还是161个什么类呀,D类。这个地方就体现出C类。通过接口。去依赖,这个依赖你可以理解成就是使用的意思什么呢?地类。明白好同样的道理c.depend depend depend4同样六个C。同样c.DEPEND561个。地雷。好,这个大家就行了。我们看这个方法,这地方是什么问题看。是。C。哦,OKD有没有实现,D没有问题吧?INTERFA3,诶,这个地方为什么他不让我用呢?看一下代码的问题。哦,这个地方没有改对不对,因为你D类才去实现这个接口了吗?OK,这样我们再来运行一把。
09:04
我们再来运行,我们看到。这边运行效果就是D实现了145。至于你D去实现这个方法和B去实现这个方法有什么不一样,那可以根据实际情况来调整。好的同学们,那这一段代码呢,我们就通过这样一个类图,诶怎么这个东西不见了呢。哎,这个类图怎么上哪去了?这个这个这个类图怎么丢了呀。好,这个类图很可惜啊,这没事,我这也准备的有,因为我以前讲课之前这准备的有哈,我把这个准备好的,到时间给他截过来就行了,就这个图是吧,刚才跟我们画的一样嘛,一样的好,没问题,我把这个呢,倒时间给他粘过来就行了。啊,照点来放到我们笔记里面就可以了,好的,那关于我们这一个,我把它直接粘这吧,站这大家可以就可以看得懂了。
10:02
我把它放到这儿。放到这里来,好吧,这个图呢,我们就直接放到我们的幻灯片里边,这样也很方便。这样也很方便,是不是同学们?好,放这就可以了。放小一点吧,别影响我们那个看图。同学们,这就是我们接口隔离原则的一个讲解,大家看下理解没有,说白了说的再直接再再。通俗一点就是我们这个一个类通过接口去依赖另外一个类,我们希望我们依赖的这个接口是最小的。用不到的这个接口里面有很多方法,我们用不到的什么呢?就进行隔离,而隔离它的手法就是把这个接口拆。拆成一个最小的,就这么一点东西,OK,好,那关于这个我们今天先聊到这里。
我来说两句