您的位置:首页 > 财经 > 金融 > 桂林市生活网官方网站_响应式网站模板分享_微信朋友圈广告_seo线上培训多少钱

桂林市生活网官方网站_响应式网站模板分享_微信朋友圈广告_seo线上培训多少钱

2025/4/4 13:47:42 来源:https://blog.csdn.net/weixin_54555405/article/details/142192614  浏览:    关键词:桂林市生活网官方网站_响应式网站模板分享_微信朋友圈广告_seo线上培训多少钱
桂林市生活网官方网站_响应式网站模板分享_微信朋友圈广告_seo线上培训多少钱

文章目录

    • 3.4 接口隔离原则(ISP)
      • 3.4.1 概述
      • 3.4.2 案列

3.4 接口隔离原则(ISP)

接口隔离原则:Interface Segregation Principle,简称ISP

3.4.1 概述

客户端测试类不应该被迫依赖于它不使用的方法;一个类对另一个类的依赖应该建立在最小的接口上。

3.4.2 案列

面看一个例子来理解接口隔离原则:

【例】安全门案例

需求:创建一个学校品牌的安全门,该安全门具有防火、防水、防盗的功能。可以将防火,防水,防盗功能提取成一个接口,形成一套规范。类图如下:

在这里插入图片描述

// 防盗门
public interface SafetyDoor {//防盗功能public abstract void antiTheft();// 防火功能public abstract void fireproof();// 防水功能public abstract void waterproof();
}
==========================================================//学校防盗门类 实现防盗门接口public class SchoolDoor implements SafetyDoor {@Overridepublic void antiTheft() {System.out.println("防盗");}@Overridepublic void fireproof() {System.out.println("防火");}@Overridepublic void waterproof() {System.out.println("防水");}
}
============================================================public class ClientTest {public static void main(String[] args) {// 创建学校防盗门对象SchoolDoor schoolDoor = new SchoolDoor();// 调用方法实现防盗门的功能schoolDoor.antiTheft();schoolDoor.waterproof();schoolDoor.fireproof();}
}

上述代码看似实现了需求的功能,但是如果加入新增一个家庭品牌的安全门,有防盗功能和防火功能,此时如果再定义一个家庭安全门类去实现安全门的接口会造成家庭安全门被迫去实现防水功能,这就违背了接口隔离原则。

根据接口隔离原则,改进如下:

在这里插入图片描述

// 防盗接口
public interface AntiTheft {public abstract void antiTheft();
}
===========================================================// 防火接口
public interface Fireproof {public abstract void fireproof();
}
===========================================================// 防水接口
public interface Waterproof {public abstract void waterproof();
}
==========================================================//创建学校防盗门,实现该有功能的接口
nmpublic class SchoolDoor implements AntiTheft,Fireproof,Waterproof{@Overridepublic void antiTheft() {System.out.println("防盗");}@Overridepublic void fireproof() {System.out.println("防火");}@Overridepublic void waterproof() {System.out.println("防水");}
}
=========================================================//新增家庭品牌安全门 实现该有功能的接口public class HomeDoor implements AntiTheft,Fireproof{@Overridepublic void antiTheft() {System.out.println("防盗");}@Overridepublic void fireproof() {System.out.println("防火");}
}
===========================================================public class ClientTest {public static void main(String[] args) {// 创建学校防盗门SchoolDoor s = new SchoolDoor();// 实现学校防盗门功能s.fireproof();s.waterproof();s.antiTheft();// 创建家庭品牌安全门HomeDoor homeDoor = new HomeDoor();//实现家庭品牌安全门的功能homeDoor.antiTheft();homeDoor.fireproof();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com