欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

软件设计原则——接口隔离原则

发布时间:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 软件设计原则——接口隔离原则 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

客户端不应该被迫依赖于它不使用的方法;

一个类对另一个类的依赖应该建立在最小的接口上。



【例】安全门案例

我们需要创建一个黑马品牌的安全门,该安全门具有防火、防水、防盗的功能。

可以将防火,防水,防盗功能提取成一个接口,形成一套规范。

类图如下:

SafetyDoor.java

package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: SafetyDoor* @Description: 安全门接口* @Author: dym*/ public interface SafetyDoor {//防盗void antiTheft();//防火void fireProof();//防水void waterProof(); }

HeimaSafetyDoor.java

package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: HeimaSafetyDoor* @Description: 黑马品牌的安全门* @Author: dym*/ public class HeimaSafetyDoor implements SafetyDoor {public void antiTheft() {System.out.println("防盗");}public void fireProof() {System.out.println("防火");}public void waterProof() {System.out.println("防水");} }

Client.java

package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: Client* @Description: TODO(一句话描述该类的功能)* @Author: dym*/ public class Client {public static void main(String[] args) {HeimaSafetyDoor door = new HeimaSafetyDoor();door.antiTheft();door.fireProof();door.waterProof();} }



上面的设计我们发现了它存在的问题,黑马品牌的安全门具有防盗,防水,防火的功能。

现在如果我们还需要再创建一个传智品牌的安全门,而该安全门只具有防盗、防水功能呢?

很显然如果实现SafetyDoor接口就违背了接口隔离原则,那么我们如何进行修改呢?

看如下类图:

 

AntiTheft.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: AntiTheft* @Description: 防盗接口* @Author: dym*/ public interface AntiTheft {void antiTheft(); }

Fireproof.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: Fireproof* @Description: 防火接口* @Author: dym*/ public interface Fireproof {void fireproof(); }

Waterproof.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: Waterproof* @Description: 防水接口* @Author: dym*/ public interface Waterproof {void waterproof(); }

HeiMaSafetyDoor.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: HeiMaSafetyDoor* @Description: TODO(一句话描述该类的功能)* @Author: dym*/ public class HeiMaSafetyDoor implements AntiTheft,Fireproof,Waterproof {public void antiTheft() {System.out.println("防盗");}public void fireproof() {System.out.println("防火");}public void waterproof() {System.out.println("防水");} }

ItcastSafetyDoor.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: ItcastSafetyDoor* @Description: 传智安全门* @Author: dym*/ public class ItcastSafetyDoor implements AntiTheft,Fireproof {public void antiTheft() {System.out.println("防盗");}public void fireproof() {System.out.println("防火");} }

Client.java

package com.itheima.principles.demo4.after;import com.itheima.principles.demo4.before.HeimaSafetyDoor;/*** @version v1.0* @ClassName: Client* @Description: TODO(一句话描述该类的功能)* @Author: dym*/ public class Client {public static void main(String[] args) {//创建黑马安全门对象HeimaSafetyDoor door = new HeimaSafetyDoor();//调用功能door.antiTheft();door.fireProof();door.waterProof();System.out.println("============");//创建传智安全门对象ItcastSafetyDoor door1 = new ItcastSafetyDoor();//调用功能door1.antiTheft();door1.fireproof();} }

总结

以上是生活随笔为你收集整理的软件设计原则——接口隔离原则的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。