Java接口隔离原则实例分析
发表于:2024-10-01 作者:千家信息网编辑
千家信息网最后更新 2024年10月01日,这篇"Java接口隔离原则实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Ja
千家信息网最后更新 2024年10月01日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安全错误
数据库的锁怎样保障安全
域名备案服务器主体要一致吗
海德威软件开发
网络安全素质征文600字
ado连接sql数据库
如何登录ftp服务器
服务器证书无效或过期
网络安全手抄报一年级简单漂亮
如何查找云服务器密码
ps4 数据库损坏 重启
网络安全创意短视频脚本
浪潮5280m5服务器尺寸
广东企业云空间部署服务器
软件开发行业的分类
武汉精测电子软件开发
椒江区高端软件开发地址
银恒软件开发有限公司
服务器系统的内存要求
数据库上机实验8触发器
音乐服务器一直显示请等待
如何设计一个安卓软件开发
信息网络安全主编
日立vge服务器
干部监督信息数据库
uwp软件开发 知乎
卧龙区网络安全
中国的数据库软件公司
apk数据库是
网络安全靶机
虚拟磁盘服务器的危害
中国凶宅数据库网址