type
status
date
slug
summary
tags
category
icon
password
一、设计模式的规范
设计模式遵循六⼤原则;单⼀职责( ⼀个类和⽅法只做⼀件事 )、⾥⽒替换( 多态,⼦类可扩展⽗类 )、依赖
倒置( 细节依赖抽象,下层依赖上层 )、接⼝隔离( 建⽴单⼀接⼝ )、迪⽶特原则( 最少知道,降低耦合 )、开闭
原则( 抽象架构,扩展实现 ),会在具体的设计模式章节中,进⾏体现。
二、接口隔离原则
定义:接口应尽量把大的接口设计为更小更具体的接口,设计为普适性,让接口中只包含了用户感兴趣的方法

三、示例
模拟场景:
1、例如:我国著名的四川变脸里面有一项规定:传男不传女,男的能拥有此技能,并且能实现,女生不能
2、例如:我们常玩的手游
王者荣耀
,设定每个技能为一个接口
,后裔拥有射箭和眩晕的技能,而廉颇拥有眩晕和击飞的技能非接口隔离原则(所有的方法都在一个接口里面)
技能接口:
ISkill
package com.qf.principle.interfaceisolation.tradition; /** * 技能接口 */ public interface ISkill { /** * 射箭 */ void doarchery(); /** * 眩晕 */ void dovertigo(); /** * 击飞 */ void dofly(); }
后裔:
HeroHouYi
package com.qf.principle.interfaceisolation.tradition; /** * 后羿会射箭、眩晕 */ public class HeroHouYi implements ISkill { @Override public void doarchery() { System.out.println("后羿会射箭"); } @Override public void dovertigo() { System.out.println("后羿会眩晕"); } @Override public void dofly() { //无此技能 } }
廉颇:
HeroLianPo
package com.qf.principle.interfaceisolation.tradition; /** * 廉颇会击飞、眩晕 */ public class HeroLianPo implements ISkill { @Override public void doarchery() { //无此技能 } @Override public void dovertigo() { System.out.println("廉颇会眩晕"); } @Override public void dofly() { System.out.println("廉颇会击飞"); } }
接口隔离原则(拆分接口)
射箭:
ISkillArchery
package com.qf.principle.interfaceisolation.design; /** * 射箭 */ public interface ISkillArchery { /** * 射箭 */ void doarchery(); }
击飞:
ISkillFly
package com.qf.principle.interfaceisolation.design; /** * 击飞 */ public interface ISkillFly { /** * 击飞 */ void dofly(); }
眩晕:
ISkillVertigo
package com.qf.principle.interfaceisolation.design; /** * 眩晕 */ public interface ISkillVertigo { /** * 眩晕 */ void dovertigo(); }
后羿:
HeroHouYi
package com.qf.principle.interfaceisolation.design; /** * 后羿会射箭、眩晕 */ public class HeroHouYi implements ISkillArchery,ISkillVertigo { @Override public void doarchery() { System.out.println("后羿会射箭"); } @Override public void dovertigo() { System.out.println("后羿会眩晕"); } }
廉颇:
HeroLianPo
package com.qf.principle.interfaceisolation.design; /** * 廉颇会击飞、眩晕 */ public class HeroLianPo implements ISkillVertigo,ISkillFly{ @Override public void dofly() { System.out.println("廉颇会击飞"); } @Override public void dovertigo() { System.out.println("廉颇会眩晕"); } }
UML关系图
以后羿为例:
未遵守接口隔离原则

遵守接口隔离原则后

总结:
接口在设计的时候,要考虑到它的普适性,根据实际应用场景设计出最普适性的接口
- 作者:程序员小舟
- 链接:https://codezhou.top/article/JAVA%E3%80%90%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E3%80%91%E6%8E%A5%E5%8F%A3%E9%9A%94%E7%A6%BB%E5%8E%9F%E5%88%99
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章