设计模式—— 四:接口隔离原则

SAP FI 提示没有为会计年度0 定义版本2025 GP626 SAP 错误 GP626 是一个常见的系统消息,通常表示某个会计年度的版本(如版本 0)未被定义或未激活。:在执行某些事务(如创建采购订单、过账凭证或维护成本中心)时,系统会检查相关版本是否已定义。的“Settings for Each Fiscal Year”界面中,选择一个已激活的会计年度。的“Settings for Each Fiscal Year”界面中,找到未激活的会计年度。:在控制范围(Controlling Area)中,未为指定的会计年度定义版本 0。如果没有,添加或复制现有年度的设置。 阅读详情

什么是接口隔离原则?

接口隔离原则有两种定义:

Clients should not be forced to depend upon interfaces that they don't use.(客户端不应该强行依赖它不需要的接口)

The dependency of one class to another one should depend on the smallest possible interface.(类间的依赖关系应该建立在最小的接口上)


这两个定义可以归纳为一个意思:建立单一接口,不要建立臃肿庞大的接口。也就是说,接口尽量细化,同时接口中的方法尽量少。

接口隔离原则看起来似乎和单一职责原则撞一块了,但是:

  • 单一职责原则要求的是类和接口职责单一,注重的是职责,这是业务逻辑上的划分。
  • 接口隔离原则要 求接口的方法尽量少,哪怕一个类或接口只有一个职责,但却有较多的方法,这再接口隔离原则中是不允许的。

为什么要用接口隔离原则?

以星探寻找美女为例:

不遵循接口隔离原则的设计

4-1:星探寻找美女类图


在这里插入图片描述

美女接口:

美女接口作了美女的定义。

复制代码
public interface IPettyGirl { 
  //要有姣好的面孔
   public void goodLooking(); 
   //要有好身材 
   public void niceFigure();
  //要有气质 
  public void greatTemperament();
}

美女实现类:

美女的具体要求。

复制代码
public class PettyGirl implements IPettyGirl { 
   private String name; //美女名字
   public PettyGirl(String _name){ 
   this.name=_name;
    }
 
  //脸蛋漂亮
   public void goodLooking() { 
    System.out.println(this.name + "---脸蛋很漂亮!"); 
   }

   //气质要好 
   public void greatTemperament() {
    System.out.println(this.name + "---气质非常好!"); 
   }

   //身材要好
    public void niceFigure() { 
       System.out.println(this.name + "---身材非常棒!"); 
    } 

}

星探抽象类:

复制代码
public abstract class AbstractSearcher { 
  protected IPettyGirl pettyGirl; 
  public AbstractSearcher(IPettyGirl _pettyGirl){
   this.pettyGirl = _pettyGirl; 
  }
  
  //搜索美女,列出美女信息 
  public abstract void show(); 

}

星探实现类:

复制代码
public class Searcher extends AbstractSearcher{ 
  public Searcher(IPettyGirl _pettyGirl){ 
    super(_pettyGirl); 
  }

 //展示美女的信息 
 public void show(){ 
   System.out.println("--------美女的信息如下:---------------"); 
   //展示面容 
   super.pettyGirl.goodLooking(); 
   //展示身材 
   super.pettyGirl.niceFigure(); 
   //展示气质 
   super.pettyGirl.greatTemperament(); 
  } 

}

场景类:

复制代码
public class Client { 
  //搜索并展示美女信息 
  public static void main(String[] args) { 
    //定义一个美女 
    IPettyGirl yanYan = new PettyGirl("嫣嫣"); 
    AbstractSearcher searcher = new Searcher(yanYan);   
    searcher.show(); 
   } 
}

运行结果:

复制代码
--------美女的信息如下:--------------- 
嫣嫣---脸蛋很漂亮! 
嫣嫣---身材非常棒! 
嫣嫣---气质非常好!

OK,这么一个选美的过程完成了。

但是仔细一想,这个接口的设计还是有问题的。这里选出的美女要容貌、身材、气质都很好。但是,如果容貌、气质都很好,身材稍逊就不算美女了吗?不然的话,怎么会有热辣型美女、气质型美女呢?IPettyGirl的设计明显是有缺陷的,过于庞大了,容纳了一些可变的因素。

遵循接口隔离原则的设计

根据接口隔离原则,重新设计。

将IPettyGirl接口拆分为两个接口,外观型美女IGoodBodyGirl,脸蛋和身材极棒;气质型美女IGreatTemperamentGirl,谈吐和修养都非常高。


 

4-2:修改后的星探寻找美女类图

在这里插入图片描述
 

两种类型的美女定义接口:

复制代码
public interface IGoodBodyGirl { 
  //要有姣好的面孔 
  public void goodLooking(); 
  //要有好身材 
  public void niceFigure(); 
}
  
public interface IGreatTemperamentGirl { 
  //要有气质 
  public void greatTemperament(); 

}

完美的美女接口:

复制代码
public class PettyGirl implements IGoodBodyGirl,IGreatTemperamentGirl { 
  private String name; //美女都有名字
  public PettyGirl(String _name){ 
     this.name=_name; 
  }

  //脸蛋漂亮 
  public void goodLooking() { 
    System.out.println(this.name + "---脸蛋很漂亮!"); 
  }

  //气质要好 
  public void greatTemperament() { 
     System.out.println(this.name + "---气质非常好!"); 
  }
  
  //身材要好 
  public void niceFigure() { 
    System.out.println(this.name + "---身材非常棒!"); 
  } 

}

把一个臃肿的接口变更为两个独立的接口所依赖的原则就是接口隔离原则,让星探 AbstractSearcher依赖两个专用的接口比依赖一个综合的接口要灵活。接口是设计时对外 提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提高系统的灵活性和可维护性。

深究接口隔离原则

接口隔离原则是对接口进行规范约束,其包含以下4层含义:

  • 接口要尽量小

这是接口隔离原则的核心定义,不出现臃肿的接口(Fat Interface)。

但是,小是有限度的,根据接口隔离原则拆分接口时,首先必须满足单一职责原则。

  • 接口要高内聚

高内聚就是提高接口、类、模块的处理能力,减少对外的交互。

具体到接口隔离原则就是,要求在接口中尽量 少公布public方法,接口是对外的承诺,承诺越少对系统的开发越有利,变更的风险也就越 少,同时也有利于降低成本。

  • 定制服务

一个系统或系统内的模块之间必然会有耦合,有耦合就要有相互访问的接口(并不一定 就是Java中定义的Interface,也可能是一个类或单纯的数据交换),设计时就需要为各个访问者(即客户端)定制服务。

  • 接口设计是有限度的

接口的设计粒度越小,系统越灵活,这是不争的事实。但是,灵活的同时也带来了结构 的复杂化,开发难度增加,可维护性降低,这不是一个项目或产品所期望看到的,所以接口 设计一定要注意适度,这个“度”如何来判断呢?根据经验和常识判断,没有一个固化或可测 量的标准。

KMS服务器一键部署与激活实战指南 本文详细介绍了KMS服务器的一键部署与激活实战指南,包括快速入门、安装步骤、服务管理技巧及常见问题排查。特别针对Windows和Mac用户提供了Office激活的具体操作步骤,并分享了高级配置与优化方案,帮助IT管理员高效管理批量授权激活。 阅读详情

相关推荐

EMC辐射发射测试:垂直与水平极化测试原理与实战指南

电磁兼容(EMC)测试是确保电子设备在复杂电磁环境中稳定运行的关键环节,其核心在于评估设备产生的电磁干扰(EMI)强度。辐射发射测试作为EMC测试的重要组成部分,通过测量设备向空间辐射的电磁噪声,判断其是否符合国际标准限值。测试原理基于电磁波的极化特性,即电场矢量的振动方向,主要分为垂直极化和水平极化。理解极化特性对于精准定位辐射源、高效进行EMC整改具有重要技术价值。在工程实践中,垂直极化噪声通常源于线缆辐射等垂直结构,而水平极化噪声多来自PCB走线等水平结构。通过分别测量两种极化方向的辐射最大值,可以全

weixin_32770423的博客 360

六大设计模式原则-接口隔离原则

一、接口隔离原则定义 接口隔离原则定义如下: 接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。 二、接口隔离原则描述 根绝接口隔离原则,当一个接口太大时,我们需要将它分割成一些细小的接口,使用该接口的客户端只需知道与之相关的方法即可。每一个接口应该承担一种相对独立的角色,不干不该干的事情,干该干的事请。这里的"接口"往往有两种不同的定义:一种是指一个类型所具有的方法特征的集合,仅仅是一种

qq_34222160的博客 7755

3D Slicer5.7在win11下的源码编译安装

本博客主要参考官方安装文档以及部分优快云的博客,部分内容的书写会直接参考官方文档的内容。

Topsort的博客 4761

软件设计七大原则:(四)接口隔离原则

一、接口隔离原则简介 用多个专门的接口,而不再使用单一的总接口,客户端不应该依赖它 不需要的接口。 一个类对一个类的依赖应该建立在最小的接口上。 建立单一接口,不要建立庞大臃肿的接口。 尽量细化接口,接口中的方法尽量少。 注意:注意适度原则,一定要适度,过大的话会增加耦合性,而过小的话会增加复杂性和开发成本。 优点:符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。 二、代码实现 ...

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 2134

用Multisim和AD2复刻经典:手把手教你搭建μA741三角波-方波发生器(附完整避坑指南)

本文详细介绍了如何使用Multisim和AD2搭建基于μA741运算放大器的三角波-方波发生器,包括电路原理、Multisim仿真流程、AD2硬件搭建及调试技巧。通过对比理论计算、仿真和实测数据,深入分析器件非理想特性的影响,并提供16个典型问题的解决方案,帮助读者掌握波形发生器的设计原理和工程调试经验。

weixin_28744423的博客 286

Sen+MK趋势分析

Sen+MK趋势分析

地理研究与算法的博客 4万+

设计模式之七大原则(三)——接口隔离原则、迪米特法则、组合/聚合复用原则

接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。根绝接口隔离原则,当一个接口太大时,我们需要将它分割成一些细小的接口,使用该接口的客户端只需知道与之相关的方法即可。每一个接口应该承担一种相对独立的角色,不干不该干的事情,干该干的事请。这里的"接口"往往有两种不同的定义:一种是指一个类型所具有的方法特征的集合,仅仅是一种逻辑上的抽象;

qq_44307209的博客 1923

无人机飞控技术最详细解读

已剪辑自: https://zhuanlan.zhihu.com/p/64519280[导读]被称作是“飞行器的大脑”的飞控到底是什么?以前,搞无人机的十个人有八个是航空、气动、机械出身,更多考虑的是如何让飞机稳定飞起来、飞得更快、飞得更高。如今,随着芯片、人工智能、大数据技术的发展,无人机开始了智能化、终端化、集群化的趋势,大批自动化、机械电子、信息工程、微电子的专业人材投入到了无人机研发大潮中,几年的时间让无人机从远离人们视野的军事应用飞入了寻常百姓家、让门外汉可以短暂的学习也能稳定可靠的飞行娱乐。不可

qq_41854911的博客 1万+

设计模式六大原则之:接口隔离原则

接口隔离原则(是面向对象设计的一个基本原则,由罗伯特·C.马丁(Robert C. Martin)在2002年提出。在不同的场景中,我们可以根据角色的不同定义不同的接口。例如,定义一个Driver接口和一个Swimmer@Override// 驾驶汽车@Override// 驾驶船只@Override// 游泳(这里可能指的是船只在水上行驶)综上,接口隔离原则的应用可以显著提高代码的灵活性和可维护性。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 2352

RTC温度补偿:如何让时间分秒不差?

RTC(实时时钟)温度补偿技术通过"检测温度→计算误差→动态调整频率"的闭环机制,解决振荡器频率随温度变化导致的时间误差问题。核心步骤包括:1)高精度温度检测;2)基于温度-频率误差模型计算偏差;3)通过硬件(可编程电容/DAC)或软件方式调整振荡频率。该技术需突破温度检测精度、误差模型拟合、频率调整分辨率等关键点,根据不同应用场景(消费电子±5ppm至军工±0.1ppm)选择匹配方案。典型实现如STM32的分段线性补偿算法,可将工业级RTC精度提升至±2ppm以内。

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1230

01-FreeSWITCH 的安装、部署、配置以及可能遇到的问题和解决方法

一文让您了解从FreeSWITCH 的安装、部署、配置、可能遇到的问题及解决方法。一切从实际项目出发,以工程应用为目的。

秋风的博客 2129

【设计原则】接口隔离原则

六大设计原则之接口隔离原则,英文名为Interface Segregation Principle, 又称ISP原则。即:客户端不应该依赖它不需要的接口。类间的依赖关系应该建立在最小的接口上。

码农桶子哥的博客 2067

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

设计模式六大原则(四):接口隔离原则(Interface Segregation Principle)

接口隔离原则(ISP)定义: 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来: 类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 解决方案: 将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。 ...

weixin_30588729的博客 112

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《设计模式》-原则四:接口隔离原则(ISP)

  啊!天气很热啊,回来洗个澡,做个饭吃完后 又出了一身汗,真后悔先洗澡。   加油坚持学习,今天要学的是“接口隔离原则” 意思是说:在设计的时候使用多个专门的接口比使用一个总的接口好很多。一个类对另一个类的依赖关系应该建立到最小接口上。   啊,这个好像比较好理解哈,就是在设计程序的时候 要学会使用接口编程。但是不要把所有的业务都写到一个接口里面,能分开最好分开。那样可以提高接口的复用性,而...

weixin_30685047的博客 74

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【专题系列】设计模式—— 四:接口隔离原则

点击上方“java大数据修炼之道”,选择“设为星标”优质文章, 第一时间送达来源 |https://www.cnblogs.com/three-fighter/p/12349725.h...

hello world! 393

接口隔离原则_设计模式(四):接口隔离原则

什么是接口隔离原则?定义1:客户端不应该被迫依赖于它没使用的方法。定义2:类之间的依赖关系应该依赖于尽可能小的接口。我们要为类建立它们各自需要的接口,不要试图创建一个含有大量接口方法的万能接口给依赖它的类使用。接口隔离原则的作用?接口隔离原则为我们提供了一个设计接口的思想,要求我们在设计接口时,要尽量细化接口,接口方法要少,专门提供给依赖该接口的类使用,使该类尽可能少实现它所不使用的接口方法。如果...

weixin_39842029的博客 261

「设计模式」六大原则之四:接口隔离原则小结

接口隔离原则小结

小羊子的技术专栏 712

设计模式六大原则之四:接口隔离原则

接口隔离原则的含义是:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。在程序设计中,依赖几个专用的接口要比依赖一个综合的接口更灵活。接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。详见下图:使用接口隔离原则设计接口时,要花

人生有梦不怕迟 550

移动架构25_设计模式六大原则四:接口隔离原则

接口隔离:建立单一的接口,功能尽量细化,不要建立臃肿的接口;

baopengjian的专栏 579

设计模式六大设计原则(四):接口隔离原则

一、定义 有两种定义: Clients should not be forced to depend upon interfaces that they don't use.(客户端不应该依赖它不需要的接口。) The dependency of one class to another o...

chuobenggu7592的博客 205

Java 设计模式6大原则之(四):接口隔离原则

接口隔离原则(ISP) 定义: 使用多个专门的接口,而不使用一个涵盖所有功能的总接口。即客户端不应该依赖那些它不需要的接口。设计接口的时候要精简单一,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。 概述: 根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。 接口隔离案例 ○ 未遵循接口隔离原则的设计,如下图 接口声明: //接口 i...

baipenggui_bo 491

设计模式学习之——六大设计原则之四:接口隔离原则

两种接口: 1. 实例接口(Object Interface) [java] view plaincopy Person zhangSan = new Person();       该实例要遵从的标准就是Person这个类,Person类就是zhangSan的接口。即Java中类也是一种接口 2. 类接口(class Interf

大自然的专栏 567

《设计模式之美》 理论四:接口隔离原则有哪三种应用?原则中的“接口”该如何理解?

王争《设计模式之美》学习笔记 如何理解“接口隔离原则”? SOLID 中的英文字母“I”,接口隔离原则,英文翻译是“ Interface Segregation Principle”,缩写为 ISP。 客户端不应该强迫依赖它不需要的接口。 如何理解“接口”二字? 把“接口”理解为一组 API 接口集合 文中举例,微服务用户系统提供了一组跟用户相关的 API 给其他系统使用,UserServi...

玲珑巫女的学习笔记 423

设计模式之禅阅读笔记四:接口隔离原则

接口隔离原则需要注意两点: 1.原子化,一个接口只实现类中类型的功能 2.单一化,针对不同的业务模块提供不同的接口。 接口隔离原则是一个相对的原则,简单来说就是原子化和单一化是相对的。如果项目相对较小,开发人员较少的情况下,我们相对可以提供原子的大小。减少开发成本。 针对接口隔离原则做出以下规定: 1.一个接口只服务于一个子模块或者业务逻辑。 2.尽量对外减少暴露pubilc方法。 3.已经污染的接口尽量去修改,如果修改风险较大采用适配者模式进行修改(还未学习) 4.最重要,一定要有自己的思

weixin_42827269的博客 228
上一篇: 设计模式—— 一:单一职责原则
下一篇: 设计模式—— 五:迪米特原则
加班不秃顶
博客等级 码龄7年 1822粉丝 599原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值