Java接口隔离原则实例分析
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,这篇"Java接口隔离原则实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Ja
千家信息网最后更新 2025年11月17日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安全错误
数据库的锁怎样保障安全
云服务器损坏概率
java登录数据库
数据库超级工程师
流媒体服务器初始化
qq怎么开王者荣耀服务器
北京网络安全工程师日常
战舰打造无法更新数据库
汽车软件开发入门书籍
韩服扫号器怎么弄数据库
生活中的网络安全ppt
服务器in
百万级别的数据库如何优化
江山租房网络安全
北京科技大学工业互联网研究院
网络安全防护技能大练兵活动
联想服务器rd550
华为网络技术规划师
乐视手机 代理服务器
网络安全 理念
软件开发增值税开票税率
名单采集软件开发
软件开发流程及方法
我的主要工作是软件开发翻译
攀枝花市艺峰互联网科技
非洲网络安全问题
阿里云轻量服务器设置防火墙
深圳苹果软件开发怎样收费
花都网络安全建设有哪些
我的世界mc网易主播服务器
分布式数据库技术要求