设计模式六大原则之四:接口隔离原则。 简介 姓名 :接口隔离原则 英文名 :Interface Segregation Principle 价值观 :宁缺毋滥 个人介绍 : 1....故事只是把大家带入这个场景,我们在工作中,着手开发之前不都得先理清好需求背景,这就是要讲接口隔离原则的背景,通过代码来给大家讲解一下如何用好接口隔离原则。...有人可能要问,不是说接口隔离么?这里面 Work 接口的 4 个方法都可以分离开,它们都是各自的工作内容。...看了这个过程,你理解了接口隔离原则了么?再看一看上面的定义:客户端不应该依赖它不需要的接口。闭上眼睛,静默 3 秒,感受一下。 我们也可以回忆一下在工作中编写的代码,是不是有遵守接口隔离原则?...总结 接口隔离原则最最最重要一点就是要根据实际情况,具体业务具体分析,不能犯了上面说到的错误:在老父亲的运营模式下,按儿子的工序划分接口去实现,那样子会得不偿失。
接口隔离原则 定义 Interface Segregation Principle:客户端不应该被强迫依赖它不需要的接口。 个人理解 两个类之间的依赖应当建立在最小的接口上。...接口颗粒度把握好,太小了调用麻烦,太大了就会提供一些客户端不需要的内容,服务端改动时影响范围增大,影响扩展性。 如果接口部分内容需要复用,可以拆出来,再使用外观模式,提供客户端需要的接口。...接口隔离原则与单一职责原则的区别 单一职责原则针对的是模块、类、接口的设计。接口隔离原则相对于单一职责原则,一方面更侧重于接口的设计,另一方面它的思考角度也是不同的。...接口隔离原则提供了一种判断接口的职责是否单一的标准:通过调用者如何使用接口来间接地判定。如果调用者只使用部分接口或接口的部分功能,那接口的设计就不够职责单一。
根据接口隔离原则,你必须将“臃肿”的方法拆分为多个颗 粒度更小的具体方法。客户端必须仅实现其实际需要的方法。否则,对于“臃肿”接口的修改可能会导致程序出错,即使 客户端根本没有使用修改后的方法。...你可将其拆分为更精细的接口, 如有需要可在单个类中 实现所有接口, 某些类也可只实现其中的一个接口。 示例 假如你创建了一个程序库, 它能让程序方便地与多种云计算 供应商进行整合。...尽管你仍然可以去实现这些方法并放入一些桩代码, 但这绝 不是优良的解决方案。更好的方法是将接口拆分为多个部分。能够实现原始接口的类现在只需改为实现多个精细的接口即 可。...其他类则可仅实现对自己有意义的接口。 修改后:一个复杂的接口被拆分为一组颗粒度更小的接口 与其他原则一样, 你可能会过度使用这条原则。不要进一步 划分已经非常具体的接口。...记住, 创建的接口越多, 代码就 越复杂。因此要保持平衡。 下一节依赖倒置原则
01.前沿简单介绍 学习了 SOLID 原则中的单一职责原则、开闭原则和里式替换原则,今天我们学习第四个原则,接口隔离原则。它对应 SOLID 中的英文字母“I”。...02.如何理解接口隔离原则 接口隔离原则的英文翻译是“ Interface Segregation Principle”,缩写为 ISP。...,我们把接口隔离原则中的接口,理解为一组接口集合,它可以是某个微服务的接口,也可以是某个类库的接口等等。...我们先来看一下,按照这个思路来实现的代码是什么样的。...2.接口隔离原则与单一职责原则的区别 单一职责原则针对的是模块、类、接口的设计。接口隔离原则相对于单一职责原则,一方面更侧重于接口的设计,另一方面它的思考角度也是不同的。
接口隔离原则 接口隔离原则表示一个类对另一个类的依赖应该建立在最小的接口上。也就是说,一个接口应该尽可能的小,只包含它需要的方法,而不是包含一些不相关的方法。...接口隔离原则是面向接口编程的重要原则之一,它体现了接口的粒度和单一性。如果一个软件能够遵循接口隔离原则,那么它就具有以下两个优点: 降低了类之间的耦合性,提高了系统的灵活性。...; } @Override public void swim() { System.out.println("鱼在水里游"); } } 这个类违反了接口隔离原则...这样的设计有以下几个缺点: 类之间的耦合度高,如果 Animal 接口发生变化,就会影响到所有实现它的类。 代码的可读性和可维护性差,因为 Animal 接口包含了一些不必要的方法。...为了遵循接口隔离原则,我们应该将 Animal 接口拆分为两个接口:Eatable 和 Swimmable。
接口隔离原则 Interface Segregation Principle 定义: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 我们可以把这两个定义概括为一句话:建立单一接口...再通俗一点讲:接口尽量细化,同时接口中的方法尽量少。 提供给每个模块的都应该是单一接口,提供给几个模块就应该有几个接口,而不是建立一个庞大的臃肿的接口,容纳所有的客户端访问。...含义: 接口要尽量小 这是接口隔离原则的核心定义,不出现臃肿的接口(Fat Interface),但是“小”是有限度的,首先就是不能违反单一职责原则。...根据接口隔离原则拆分接口时,首先必须满足单一职责原则。 接口要高内聚 高内聚就是要提高接口、类、模块的处理能力,减少对外的交互。...具体到接口隔离原则就是,要求在接口中尽量少公布public方法,接口是对外的承诺,承诺地越少对系统开发越有利,变更的风险也就越少,同时也有利于降低成本。
设计模式 接口隔离原则 用类图说明 [7.png] 然后书写代码清单 public interface IPettyGirl{ // 面孔 public void goodLooking(); /...对好看的定义,发生了改变,那么就应该改变PettyGirl中的内容,但是已经在接口中定义了。那么就有问题了。即,接口承担的内容过多导致 接口隔离原则 发现问题了。...接口被过度的封装了,那么就要进行拆分。...即,要满足单一原则。...接口要高内聚 即 接口中少公布public方法,即,接口要承担的职责要最小,最核心 举例,要定制图书管理系统 [9.png] 拆分成两个接口,该接口一个对内,一个对外,保证了安全。
表述(设计接口的时候要精简) 一个接口代表一个角色,不应该将不同的角色都交给一个接口文件,因为这样可能会形成一个臃肿的大接口 优点 类的可读性强,可维护性强 示例 需求:员工的工资计算,定义一个公司工资的协议...,里面分别是基础工资、职级工资和年终奖,职员和经理分别实现这个协议,但是职员是没有职级工资的,所以很明显,职员不需要实现方法rankWage,协议对于职员类就不是最小接口 protocol EmployeeProtocol...} func baseSalary() { } func rankWage() { } func annualBonus() { } } 代码重构:遵循接口隔离原则...*,需要将EmployeeProtocol协议拆分为独立的几个协议 protocol EmployeeProtocol{ func baseSalary() func annualBonus
使用适配器模式来实现接口的方法。适配器模式是一种设计模式,它可以将一个接口转换成另一个接口,以便客户端可以使用它。在ISP原则中,适配器模式可以用来将一个大的、笨重的接口适配成更小的、更具体的接口。...例如,以下是一个使用适配器模式的接口示例:public interface Bird { void fly(); void eat();}public class Eagle implements...Eagle类实现了Bird接口,并且实现了fly()和eat()方法。但是,我们需要将Bird接口拆分成更小的、更具体的接口,例如Moveable和Eatable接口。...BirdAdapter类实现了Moveable接口和Eatable接口,并将Bird对象作为它的成员变量。...它的move()方法将调用Bird对象的fly()方法,它的eat()方法将调用Bird对象的eat()方法。这样,客户端只需要实现Moveable和Eatable接口,而不需要实现Bird接口。
介绍接口隔离原则(Interface Segregation Principle,简称ISP)是面向对象设计中的一项原则,它强调接口的独立性和高内聚性。...该原则要求将大的、笨重的接口拆分成更小的、更具体的接口,以便客户端只需了解它们所需的接口,而不需要了解不必要的接口。ISP原则的目的是降低类之间的耦合度,增强系统的灵活性、可维护性和可扩展性。...ISP原则的核心思想ISP原则的核心思想是:一个类不应该强制依赖于它不需要的接口。换句话说,客户端应该只依赖于它需要的接口,而不依赖于不需要的接口。...这样,客户端只需要实现它们需要的接口,而不需要实现不需要的接口。ISP原则的实现方法ISP原则可以通过以下方法来实现:将接口拆分成更小的、更具体的接口。...在设计接口时,应该将大的、笨重的接口拆分成更小的、更具体的接口,以便客户端只需了解它们所需的接口,而不需要了解不必要的接口。
假设我们有一个名为Document的类,它表示一个文档。文档可以保存到文件中,也可以从文件中加载。我们可以将Document接口拆分成更小的、更具体的接口,例如Savable和Loadable接口。...Loadable接口。...Savable接口定义了save()方法,Loadable接口定义了load()方法。Document类实现了这些方法,并且在这些方法中实现了保存文档和加载文档的逻辑。...在Application类中,我们创建了一个Document对象,并调用了它的save()方法和load()方法。...由于Document类实现了Savable接口和Loadable接口,我们可以将Document对象视为Savable对象和Loadable对象,并使用这些接口中定义的方法。
接口隔离原则的定义 什么是接口....什么是隔离 隔离要求将接口尽量细化,同时接口中的方法尽量少....接口隔离原则的实现 比如现在有一个人,他身兼数职,是一个老师,要教书,是一个学生,要学习,类图如下: ?...接口的规范约束 接口要尽量小,这是接口隔离原则的核心定义,但是"小"是有限度的,首先就是不能违背单一职责原则..... ---- 接口隔离原则就是对接口的定义,同时也是对类的定义,接口和类尽量使用原子接口或原子类来组装.
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删 接口隔离原则(Interface isolation principle...,ISP)是指用多个专门的接口,而不是用单一的总接口,客户端不应该依赖它不需要的接口。 ...这个原则知道我们在设计接口时应当注意以下几点: 一个类对另一个类的依赖应当建立在最小的接口上。 建立单一的接口,不要建立庞大臃肿的接口。...尽量细化解耦,接口中的方法尽量少(不是越少越好) 接口隔离原则符合我们常说的高内聚、低耦合的设计思想,可以使类具有很好的可读性、可扩展性和可维护性。...现在有一个Dog实现了它,显然狗是不能飞的,那么里面的fly方法是不是就空着了。 那么这就不符合接口隔离原则了,怎么改进呢? 把三种行为拆分为三个接口,让每个动物实现他们各自需要的就行了。
什么是接口隔离原则? 定义1:客户端不应该被迫依赖于它没使用的方法。 定义2:类之间的依赖关系应该依赖于尽可能小的接口。...我们要为类建立它们各自需要的接口,不要试图创建一个含有大量接口方法的万能接口给依赖它的类使用。 接口隔离原则的作用?...庞大的接口里有大量接口方法,若一个类实现这个接口,就必须实现所有的接口方法,很容易造成代码冗余。 为什么要遵守接口隔离原则? 我们将通过简单例子来讲述为何我们要遵守接口隔离原则。...设计接口时我们需要结合单一职责原则将相同职责的接口方法放在一起,同时结合项目实际利用接口隔离原则减少接口方法,一般一个接口只服务于一个小功能模块。...接口隔离原则的实现方法 在实际使用接口隔离原则时,我们应该根据以下几个规则来贯彻实行。 从业务需求角度分析。每个项目都有自己业务逻辑,开发要求等等因素,导致接口的拆分标准不能一套标准多次复用。
接口隔离原则,客户端不应该被强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。...判断标准 从接口调用方来判断,是否提供了多余的能力 也就是增加不必要的依赖,而且会造成调用方使用的困惑 与单一职责原则的区别 接口隔离原则跟单一职责原则有点类似,其区别在于, 单一职责原则针对的是模块...、类、接口的设计 接口隔离原则更侧重于接口的设计,而且思考的角度不同。...接口隔离原则需要站在调用方来判断,是否被强迫依赖了不需要的接口 如何实现接口隔离原则 首先保证接口职责单一,符合单一职责原则 接口由一组逻辑高度自洽的功能组成,比如订单履约、订单查询、订单分析等 示例...订单交易系统中,一开始会把订单相关代码实现在一个接口,比如订单创建、查询、发货、到货等,但是随着业务发展,业务会逐渐区分C端履约,B端履约,B端查询分析等子系统, 这个时候就需要把订单接口拆分为3个对应的接口
05.接口隔离原则介绍目录介绍01.问题思考的分析02.学习接口隔离目标03.理解接口隔离原则04.接口隔离原则思想05.一组API接口集合案例06.单个API接口或函数07.总结接口隔离原则08.思考一道课后题...02.学习接口隔离目标学习了 SOLID 原则中的单一职责原则、开闭原则和里式替换原则,今天我们学习接口隔离原则。它对应 SOLID 中的英文字母“I”。...接口隔离原则与单一职责原则的比较,他们各自的特点:单一职责原则针对的是模块、类、接口的设计。接口隔离原则相对于单一职责原则,一方面更侧重于接口的设计,另一方面它的思考角度也是不同的。...在哪些场景需要注意接口隔离原则?如何理解接口隔离原则:简单来说,这个原则鼓励将庞大而臃肿的接口拆分为更小、更具体的接口,以便客户端只需依赖它们所需的接口。...实现接口隔离原则的方式:1.拆分大接口;2.定义细化接口;3.接口继承;4.接口组合;5.依赖注入接口隔离原则的案例教学:看博客中的代码案例接口隔离原则的优点:接口隔离原则的优点包括精简接口、避免强迫实现
接口隔离原则看起来似乎和单一职责原则撞一块了,但是: 单一职责原则要求的是类和接口职责单一,注重的是职责,这是业务逻辑上的划分。...接口隔离原则要 求接口的方法尽量少,哪怕一个类或接口只有一个职责,但却有较多的方法,这再接口隔离原则中是不允许的。 为什么要用接口隔离原则?...IPettyGirl的设计明显是有缺陷的,过于庞大了,容纳了一些可变的因素。 遵循接口隔离原则的设计 根据接口隔离原则,重新设计。...深究接口隔离原则 接口隔离原则是对接口进行规范约束,其包含以下4层含义: 接口要尽量小 这是接口隔离原则的核心定义,不出现臃肿的接口(Fat Interface)。...但是,小是有限度的,根据接口隔离原则拆分接口时,首先必须满足单一职责原则。 接口要高内聚 高内聚就是提高接口、类、模块的处理能力,减少对外的交互。
接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。...这个原则指导我们在设计接口时应当注意以下几点: (1)一个类对另一个类的依赖应该建立在最小的接口之上。 (2)建立单一接口,不要建立庞大臃肿的接口。...(3)尽量细化接口,接口中的方法尽量少(不是越少越好,一定要适度)。 接口隔离原则符合我们常说的高内聚、低耦合的设计思想,可以使类具有很好的可读性、可扩展性和可维护性。...我们在设计接口的时候,要多花时间去思考,要考虑业务模型,包括对以后有可能发生变更的地方还要做一些预判。所以,对于抽象、对于业务模型的理解是非常重要的。...IEatAnimal接口的代码如下: public interface IEatAnimal { void eat(); } IFlyAnimal接口的代码如下: public interface
本文节选自《设计模式就该这样学》 接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。...这个原则指导我们在设计接口时应当注意以下几点: (1)一个类对另一个类的依赖应该建立在最小的接口之上。 (2)建立单一接口,不要建立庞大臃肿的接口。...(3)尽量细化接口,接口中的方法尽量少(不是越少越好,一定要适度)。 接口隔离原则符合我们常说的高内聚、低耦合的设计思想,可以使类具有很好的可读性、可扩展性和可维护性。...我们在设计接口的时候,要多花时间去思考,要考虑业务模型,包括对以后有可能发生变更的地方还要做一些预判。所以,对于抽象、对于业务模型的理解是非常重要的。...IEatAnimal接口的代码如下: public interface IEatAnimal { void eat(); } IFlyAnimal接口的代码如下: public interface
如果没有拆分成三个接口,肯定不需要这样的判断。 所以还得重新审视一下ISP。 ISP:接口隔离原则,里面两个关键词:“接口”和“隔离”;“隔离”相对比较简单,从单一职责角度,把职责不相关的行为拆分开。...通过使用接口隔离原则,我们可以将一个实现类的不同方法包装在不同的接口中对外暴露。应用程序只需要依赖它们需要的方法,而不会看到不需要的方法。...通过空间的换取逻辑的明确性。 VS SRP 接口隔离原则跟单一职责原则有点类似,不过稍微还是有点区别。 单一职责原则针对的是模块、类、接口的设计。...而接口隔离原则相对于单一职责原则,一方面它更侧重于接口的设计,另一方面它的思考的角度不同。 它提供了一种判断接口是否职责单一的标准:通过调用者如何使用接口来间接地判定。...如果调用者只使用部分接口或接口的部分功能,那接口的设计就不够职责单一。 总结 表达原则的文字都很简单,但在实践时又会陷入落地时的困境。 这些原则的背后,也体现了架构之道,虚实结合之道。