设计模式系列之七大原则之——接口隔离原则

接口隔离原则:

一个类不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口之上

这句话理解起来可能表晦涩,我们来举个例子对比说明一下就立刻明白什么叫“接口隔离原则”了

 1 //接口A
 2 interface A{
 3     void a();
 4     void b();
 5     void c();
 6     void d();
 7 }
 8 
 9 //B实现了接口A,但是B实际上仅仅需要a和b两个方法,而c和d根本就用不到
10 class B implements A{
11     @Override
12     public void a() {
13         System.out.println("a方法B类需要");
14     }
15     @Override
16     public void b() {
17         System.out.println("b方法B类需要");
18     }
19     @Override
20     public void c() {
21         System.out.println("c方法B类不需要");
22     }
23     @Override
24     public void d() {
25         System.out.println("d方法B类不需要");
26     }
27 }
28 
29 //B实现了接口A,但是B实际上仅仅需要a和b两个方法,而c和d根本就用不到
30 class D implements A{
31     @Override
32     public void a() {
33         System.out.println("a方法D不需要");
34     }
35     @Override
36     public void b() {
37         System.out.println("b方法D类不需要");
38     }
39     @Override
40     public void c() {
41         System.out.println("c方法D类需要");
42     }
43     @Override
44     public void d() {
45         System.out.println("d方法D类需要");
46     }
47 }

以上是没有遵循接口隔离原则的,我们发现接口A里面有a、b、c、d四个方法,同时B和D都实现了A接口,但是B类只要a和b两个方法,D类只需要d和c两个方法,也就是说这个时候对于B类而言c和d完全是没有用的,同理对于D而言a和b方法完全是没用的。这样的设计显然是不合理的。

下面遵循接口隔离原则重新设计接口

 1 interface A{
 2     void a();
 3     void b();
 4 }
 5 interface C{
 6     void c();
 7     void d();
 8 }
 9 class B implements A{
10 
11     @Override
12     public void a() {
13         
14     }
15 
16     @Override
17     public void b() {
18 
19     }
20 }
21 
22 
23 class D implements C{
24 
25     @Override
26     public void c() {
27         
28     }
29 
30     @Override
31     public void d() {
32 
33     }
34 }

可见,根据接口隔离的原则设计的接口不管是在B还是在D类中都没有用不到的方法,之前的A接口被拆分成了A和C接口。这样的设计原则就是接口隔离原则

posted @ 2019-07-31 09:22  孤僻的小孩  阅读(156)  评论(0编辑  收藏  举报