Java接口隔离原则实例分析
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇"Java接口隔离原则实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Ja
千家信息网最后更新 2026年11月04日Java接口隔离原则实例分析
这篇"Java接口隔离原则实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Java接口隔离原则实例分析"文章吧。
定义
接口隔离原则(Interface Segregation Principle),又称为ISP原则,官方定义为
1.客户端不应该依赖它不需要的接口
2.类间的依赖关系应该建立在最小的接口上
简单点来讲就是在一个类中不要定义过多的方法,接口应该尽量简单细化
案例
需求
假设有这样一个案例场景,现在有一个接口Repair,给定他有三个能力,可以修汽车,修火车,修飞机, 两个实现类张师傅,李师傅分别具有这些能力,有一个4S店类,假设是需要张师傅来修汽车和修飞机,而另一个4s店类需要李师傅来修汽车和修火车
方案一
定义维修接口类Repair.java
/** * 维修类 * @author:liyajie * @createTime:2022/1/29 17:00 * @version:1.0 */public interface Repair { /** * 维修汽车 * @author: liyajie * @date: 2022/1/29 17:03 * @param * @return void * @exception: * @update: * @updatePerson: **/ void car(); /** * 维修火车 * @author: liyajie * @date: 2022/1/29 17:03 * @param * @return void * @exception: * @update: * @updatePerson: **/ void train(); /** * 维修飞机 * @author: liyajie * @date: 2022/1/29 17:03 * @param * @return void * @exception: * @update: * @updatePerson: **/ void air();}维修李师傅类RepairLi.java
/** * 维修类 * @author:liyajie * @createTime:2022/1/29 17:00 * @version:1.0 */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
/** * 维修类 * @author:liyajie * @createTime:2022/1/29 17:00 * @version:1.0 */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
/** * 4s店1 * @author:liyajie * @createTime:2022/1/29 17:07 * @version:1.0 */public class S1Shop { /** * 修汽车 * @author: liyajie * @date: 2022/1/29 17:10 * @param repair * @return void * @exception: * @update: * @updatePerson: **/ public void car(Repair repair){ repair.car(); } /** * 修火车 * @author: liyajie * @date: 2022/1/29 17:10 * @param repair * @return void * @exception: * @update: * @updatePerson: **/ public void train(Repair repair){ repair.train(); }}4s店2
/** * 4s店2 * @author:liyajie * @createTime:2022/1/29 17:07 * @version:1.0 */public class S2Shop { /** * 修汽车 * @author: liyajie * @date: 2022/1/29 17:10 * @param repair * @return void * @exception: * @update: * @updatePerson: **/ public void car(Repair repair){ repair.car(); } /** * 修飞机 * @author: liyajie * @date: 2022/1/29 17:10 * @param repair * @return void * @exception: * @update: * @updatePerson: **/ public void air(Repair repair){ repair.air(); }}测试类1
/** * 测试类1 * @author:liyajie * @createTime:2022/1/29 16:46 * @version:1.0 */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()); }}方案二
定义维修汽车接口
/** * 维修类 * @author:liyajie * @createTime:2022/1/29 17:00 * @version:1.0 */public interface RepairCar { /** * 维修汽车 * @author: liyajie * @date: 2022/1/29 17:03 * @param * @return void * @exception: * @update: * @updatePerson: **/ void car();}定义维修火车类
/** * 维修类 * @author:liyajie * @createTime:2022/1/29 17:00 * @version:1.0 */public interface RepairTrain { /** * 维修火车 * @author: liyajie * @date: 2022/1/29 17:03 * @param * @return void * @exception: * @update: * @updatePerson: **/ void train();}定义维修飞机类
/** * 维修类 * @author:liyajie * @createTime:2022/1/29 17:00 * @version:1.0 */public interface RepairAir { /** * 维修飞机 * @author: liyajie * @date: 2022/1/29 17:03 * @param * @return void * @exception: * @update: * @updatePerson: **/ void air();}4s店1
/** * 4s店1 * @author:liyajie * @createTime:2022/1/29 17:07 * @version:1.0 */public class S1ShopNew { /** * 修汽车 * @author: liyajie * @date: 2022/1/29 17:10 * @param repairCar * @return void * @exception: * @update: * @updatePerson: **/ public void car(RepairCar repairCar){ repairCar.car(); } /** * 修火车 * @author: liyajie * @date: 2022/1/29 17:10 * @param repairTrain * @return void * @exception: * @update: * @updatePerson: **/ public void train(RepairTrain repairTrain){ repairTrain.train(); }}4s店2
/** * 4s店2 * @author:liyajie * @createTime:2022/1/29 17:07 * @version:1.0 */public class S2ShopNew { /** * 修汽车 * @author: liyajie * @date: 2022/1/29 17:10 * @param repairCar * @return void * @exception: * @update: * @updatePerson: **/ public void car(RepairCar repairCar){ repairCar.car(); } /** * 修飞机 * @author: liyajie * @date: 2022/1/29 17:10 * @param repairAir * @return void * @exception: * @update: * @updatePerson: **/ public void air(RepairAir repairAir){ repairAir.air(); }}测试类
/** * 测试类1 * @author:liyajie * @createTime:2022/1/29 16:46 * @version:1.0 */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()); }}对比分析
方案一,违反了接口隔离原则,因为李师傅和王师傅都实现了维修接口的三个方法:修汽车,修火车,修飞机。但需求中并不需要这么多,只需要李师傅修汽车和火车,王师傅修汽车和飞机,依赖关系不是建立在最小接口上
方案二,遵守了接口隔离原则,对李师傅和王师傅类都进行了接口隔离,实现了各自的两个方法,避免了耦合
以上就是关于"Java接口隔离原则实例分析"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
维修
师傅
接口
汽车
火车
飞机
原则
隔离
内容
分析
方案
测试
实例
实例分析
方法
最小
三个
两个
就是
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网加科技
广州大一互联网络科技有限公司
高科技互联网
互联网科技财经
重庆互联网络科技
易通互联网络科技有限公司
国外互联网科技网站
天扬科技互联网广告
深圳互联网科技怎么样
湖南洣水互联网科技有限公司扣款
创业天下互联网科技有限公司
湖北码尼互联网科技有限公司电话
亳州好赞互联网科技有限公司
科技赋能视角下互联网保险发展
山东有哪些互联网科技公司
美国互联网科技实力
皮皮虾互联网科技有限公司
厦门江牛科技互联网
陕西云淼互联网科技公司
云鲸互联网络科技有限公司
广州大一互联网络科技有限公司
科技互联网创业计划书
互联网巨头投资的硬核科技
互联网企业和科技型企业
河南猎农互联网科技有限公司
燊美集互联网科技有限公司
高科技互联网套路
产业互联网科技服务公司
九思连强互联网电子科技有限公司
悟空问答互联网科技