文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中接口隔离原则是什么

2023-06-29 02:46

关注

小编给大家分享一下Java中接口隔离原则是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1.什么是接口隔离原则?

客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口范围上。

2.对应代码

Java中接口隔离原则是什么

上面这张图呢,就违反了接口隔离原则。它对应的代码如下:????????????

package com.szh.principle.segregation; interface Interface1 {    void operation1();    void operation2();    void operation3();    void operation4();    void operation5();} class B implements Interface1 {    public void operation1() {        System.out.println("B 实现了 operation1");    }    public void operation2() {        System.out.println("B 实现了 operation2");    }    public void operation3() {        System.out.println("B 实现了 operation3");    }    public void operation4() {        System.out.println("B 实现了 operation4");    }    public void operation5() {        System.out.println("B 实现了 operation5");    }} class D implements Interface1 {    public void operation1() {        System.out.println("D 实现了 operation1");    }    public void operation2() {        System.out.println("D 实现了 operation2");    }    public void operation3() {        System.out.println("D 实现了 operation3");    }    public void operation4() {        System.out.println("D 实现了 operation4");    }    public void operation5() {        System.out.println("D 实现了 operation5");    }} class A { //A 类通过接口Interface1 依赖(使用) B类,但是只会用到1,2,3方法    public void depend1(Interface1 i) {        i.operation1();    }    public void depend2(Interface1 i) {        i.operation2();    }    public void depend3(Interface1 i) {        i.operation3();    }} class C { //C 类通过接口Interface1 依赖(使用) D类,但是只会用到1,4,5方法    public void depend1(Interface1 i) {        i.operation1();    }    public void depend4(Interface1 i) {        i.operation4();    }    public void depend5(Interface1 i) {        i.operation5();    }} public class Segregation1 {    public static void main(String[] args) {        A a = new A();        a.depend1(new B()); // A类通过接口去依赖B类        a.depend2(new B());        a.depend3(new B());         C c = new C();        c.depend1(new D()); // C类通过接口去依赖(使用)D类        c.depend4(new D());        c.depend5(new D());    }}

代码虽然很长,但是不难理解。A类依赖了B类,但是只会用到顶级接口中的1、2、3这三个方法;而C类依赖了D类,但是只会用到顶级接口中的1、4、5这三个方法,也就是说在A和B这两个类的层面上而言,和顶级接口中的4、5两个方法是没什么关联的,那么B类在实现顶级接口的时候就没必要重写4、5这两个方法了。但是这里有一个问题就是顶级接口中包括了1到5这五个方法,你如果实现这个接口就必须重写这五个方法,那么我们就可以考虑将顶级接口拆分成多个接口,需要用到哪个就实现哪个,这也就是所谓的接口隔离了。

3.改进代码

Java中接口隔离原则是什么

经过上面的一番叙述,我们可以将代码改写成下面的形式。

即将顶级接口拆分成3个小接口,B、D两个类根据实际情况该实现哪个接口就实现哪个接口(因为这五个方法已经被分开了)。

package com.szh.principle.segregation.improve; interface Interface1 {    void operation1();} interface Interface2 {    void operation2();    void operation3();} interface Interface3 {    void operation4();    void operation5();} class B implements Interface1, Interface2 {    public void operation1() {        System.out.println("B 实现了 operation1");    }     public void operation2() {        System.out.println("B 实现了 operation2");    }     public void operation3() {        System.out.println("B 实现了 operation3");    }} class D implements Interface1, Interface3 {    public void operation1() {        System.out.println("D 实现了 operation1");    }     public void operation4() {        System.out.println("D 实现了 operation4");    }     public void operation5() {        System.out.println("D 实现了 operation5");    }} class A { // A 类通过接口Interface1,Interface2 依赖(使用) B类,但是只会用到1,2,3方法    public void depend1(Interface1 i) {        i.operation1();    }     public void depend2(Interface2 i) {        i.operation2();    }     public void depend3(Interface2 i) {        i.operation3();    }} class C { // C 类通过接口Interface1,Interface3 依赖(使用) D类,但是只会用到1,4,5方法    public void depend1(Interface1 i) {        i.operation1();    }     public void depend4(Interface3 i) {        i.operation4();    }     public void depend5(Interface3 i) {        i.operation5();    }} public class Segregation2 {    public static void main(String[] args) {        A a = new A();        a.depend1(new B()); // A类通过接口去依赖B类        a.depend2(new B());        a.depend3(new B());         C c = new C();        c.depend1(new D()); // C类通过接口去依赖(使用)D类        c.depend4(new D());        c.depend5(new D());    }}

Java中接口隔离原则是什么

4.接口隔离原则总结

  1. 类A通过接口Interface1依赖类B,类C通过接口Interfacel依赖类D,如果接口Interface1对于类A和类C来说不是最小接口,那么类B和类D必须去实现他们不需要的方法。

  2. 将接口Interface1拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。

以上是“Java中接口隔离原则是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯