我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java设计模式七大原则之接口隔离原则详解

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java设计模式七大原则之接口隔离原则详解

定义

接口隔离原则(Interface Segregation Principle),又称为ISP原则,官方定义为

1.客户端不应该依赖它不需要的接口

2.类间的依赖关系应该建立在最小的接口上

简单点来讲就是在一个类中不要定义过多的方法,接口应该尽量简单细化

案例

需求

假设有这样一个案例场景,现在有一个接口Repair,给定他有三个能力,可以修汽车,修火车,修飞机, 两个实现类张师傅,李师傅分别具有这些能力,有一个4S店类,假设是需要张师傅来修汽车和修飞机,而另一个4s店类需要李师傅来修汽车和修火车

方案一

定义维修接口类Repair.java


public interface Repair {

    
    void car();

    
    void train();

    
    void air();
}

维修李师傅类RepairLi.java


public class RepairLi implements Repair{


    @Override
    public void car() {
        System.out.println("李师傅修汽车");
    }

    @Override
    public void train() {
        System.out.println("李师傅修火车");
    }

    @Override
    public void air() {
        System.out.println("李师傅修飞机");
    }
}

维修王师傅类RepairWang.java


public class RepairWang implements Repair{

    @Override
    public void car() {
        System.out.println("王师傅修汽车");
    }

    @Override
    public void train() {
        System.out.println("王师傅修火车");
    }

    @Override
    public void air() {
        System.out.println("王师傅修飞机");
    }
}

4s店1


public class S1Shop {

    
    public void car(Repair repair){
        repair.car();
    }

    
    public void train(Repair repair){
        repair.train();
    }
}

4s店2


public class S2Shop {
    
    public void car(Repair repair){
        repair.car();
    }

    
    public void air(Repair repair){
        repair.air();
    }
}

测试类1


public class Test1 {
    public static void main(String[] args) {
        // 4s店1
        new S1Shop().car(new RepairLi());
        new S1Shop().train(new RepairLi());

        // 4s店2
        new S2Shop().car(new RepairWang());
        new S2Shop().air(new RepairWang());
    }
}

方案二

定义维修汽车接口


public interface RepairCar {

    
    void car();
}

定义维修火车类


public interface RepairTrain {

    
    void train();
}

定义维修飞机类


public interface RepairAir {

    
    void air();
}

4s店1


public class S1ShopNew {

    
    public void car(RepairCar repairCar){
        repairCar.car();
    }

    
    public void train(RepairTrain repairTrain){
        repairTrain.train();
    }
}

4s店2


public class S2ShopNew {
    
    public void car(RepairCar repairCar){
        repairCar.car();
    }

    
    public void air(RepairAir repairAir){
        repairAir.air();
    }
}

测试类


public class Test2 {
    public static void main(String[] args) {
        // 4s店1
        new S1ShopNew().car(new RepairLiNew());
        new S1ShopNew().train(new RepairLiNew());

        // 4s店2
        new S2ShopNew().car(new RepairWangNew());
        new S2ShopNew().air(new RepairWangNew());
    }
}

对比分析

方案一,违反了接口隔离原则,因为李师傅和王师傅都实现了维修接口的三个方法:修汽车,修火车,修飞机。但需求中并不需要这么多,只需要李师傅修汽车和火车,王师傅修汽车和飞机,依赖关系不是建立在最小接口上

方案二,遵守了接口隔离原则,对李师傅和王师傅类都进行了接口隔离,实现了各自的两个方法,避免了耦合

总结

通过上面两个案例,我们可以得到以下结论: 接口隔离原则就是当我一个类通过接口依赖(使用)另一个类的时候,要保证依赖的该接口是最小的,接口里面有方法用不到的,就进行隔离,而隔离的做法就是,就对原来接口进行拆分,拆分为最小粒度,来避免耦合。

小知识点

有没有发现接口隔离原则与我们上一篇的单一职责原则有点相似,来看下他们的相同点和不同点吧

相同点

都要求对结构进行拆分,都要求更小的粒度,都希望减少耦合

不同点

1.单一职责原则:类与接口职责单一,注重的是职责

2.接口隔离原则:要求我们尽量使用多个专门的接口,注重的是接口的设计

以上就是Java设计模式七大原则之接口隔离原则详解的详细内容,更多关于Java接口隔离原则的资料请关注编程网其它相关文章!

免责声明:

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

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

Java设计模式七大原则之接口隔离原则详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java设计模式中的七大原则详细讲解

本篇文章主要对Java中的设计模式如,创建型模式、结构型模式和行为型模式以及7大原则进行了归纳整理,需要的朋友可以参考下,希望能给你带来帮助
2023-02-17

Python七大原则,24种设计模式

七大原则,24种设计模式七大设计原则: 1、单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】:一个类负责一项职责. 2、里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】:继承与派生的规
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录