`
student_lp
  • 浏览: 437142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

     接口隔离原则讲的是:使用多个专门的接口比使用单一的总接口要好。换言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口上的

一、什么是接口隔离原则

   人们常说的“接口”往往有两种含义,一种是狭义上的,指的是Java语言中的有严格定义的interface结构;另一种则是广义上的,指的是一个类型所具有的方法特征的集合,但这仅是一种逻辑上的抽象。对于这两种不同的用词,接口隔离原则的表达方式以及含义都有所不同。

     ①将“接口”理解为一个类所提供的所有方法的特征集合,也就是一种在逻辑上才存在的概念。这样的话,接口的划分就直接带来类型的划分。一种接口相当于剧本中的一种角色,而此角色在一个舞台上由那个演员来演则相当于接口的实现。因此,一个接口应当简单的代表一个角色,而不是多个角色。如果系统涉及到多个角色的话,那么每一个角色都相当于一个特定的接口代表。

     ②将接口理解成狭义的Java接口,这样一来,接口隔离原则讲的就是为同一个角色提供宽、窄不同的接口,以对付不同的客户端。这种方法在服务行业中叫做定制服务。

二、接口污染

     过于臃肿的接口是对接口的污染。每一个接口都代表一个角色,实现一个接口的对象,在他的整个生命周期中都扮演这个角色,因此将角色区分清楚就是系统设计的一个重要工作。一个符合逻辑的推断,不应当将几个不同的角色交给同一个接口,而应当交给不同的接口。

     准确而恰当的划分角色以及角色所对应的接口,是面向对象的设计的一个重要的组成部分。将没有关系的接口合并在一起,形成一个臃肿的大接口,是对角色和接口的污染。

三、与迪米特法则的关系

     迪米特法则要求任何一个软件实体,除非绝对需要,不然不要与外界通讯。即使必须进行通讯,也应当尽量限制通讯的广度和深度。显然,定制服务原则拒绝向客户端提供不需要提供的行为,是符合迪米特法则的。

四、定制服务的例子

   定制服务也是一个重要的设计原则。他的意思是说,如果客户端仅仅需要一些方法的话,那么就应当向客户端提供这些需要的方法,而不是提供不需要的方法。

     这样做有什么效果?

     ①这样做很整洁。从美学的角度上考虑,这是一个很好的做法。

     ②系统的可维护性。向客户端提供的public接口是一种承诺,一个对外开发的接口一旦承诺,就很难撤回。作为软件提供商,我们不应当作出过多的承诺,特别是不需要的承诺。过多的承诺会给系统的维护造成不必要的负担。

     如果这些接口仅仅是给公司内部的系统使用,那么将这些接口隔离开来,也可以降低维护的成本。因为如果一旦所提供的服务出现变化的话,我们知道哪些客户端会受到影响,哪些不会受到影响。这显然也是符合迪米特法则的。

五、古语解析

     “看人下菜碟”的意思说,要看客人是谁,再提供不同档次的饭菜。从接口隔离原则的角度出发,根据客户端需要的不同,而为不同的客户端提供不同的服务是一种应当得到鼓励的做法。

 

 

本文通过总结《java与模式》而来。

分享到:
评论

相关推荐

    Java语言编程规范--华为技术有限公司

    - 使用接口来定义合同,实现类则负责具体逻辑,遵循接口隔离原则(ISP)。 - 遵循依赖倒置原则(DIP),高层次模块不应依赖低层次模块,两者都应依赖于抽象。 - 尽可能使用抽象类或接口,而不是具体实现。 4. **...

    23种 设计模式---面向对象的基本原则

    4. 接口隔离原则(Interface Segregation Principle, ISP):不应该强迫客户端依赖于它们不需要的方法。将大的接口拆分为小的、更具体的接口,使得客户端只需关注所需的部分。 5. 依赖倒置原则(Dependency ...

    举例说明Java设计模式编程中ISP接口隔离原则的使用

    接口隔离原则(ISP)是设计模式中的一个重要原则,它的核心思想是强调接口的职责单一,避免接口过大导致不必要的依赖。在Java编程中,遵循ISP原则能够提高代码的灵活性、可维护性和可扩展性。 首先,让我们理解ISP...

    简单理解遵循接口隔离原则的Java设计模式编程

    在Java编程中,设计模式是一种重要的软件设计方法,它能够帮助我们编写更加可维护、可扩展的代码。...在Java设计模式编程中,理解和应用接口隔离原则至关重要,因为它有助于构建健壮且易于扩展的软件系统。

    PHP面向对象五大原则之接口隔离原则(ISP)详解

    面向对象编程中,接口隔离原则(ISP)是五大设计原则之一,它建议不应该强迫客户端依赖于它们不用的接口。在PHP中实现ISP,可以避免不必要的依赖,提高代码的可维护性和灵活性。下面详细说明接口隔离原则的概念、...

    《设计模式--基于C#的工程化实现及扩展》.(王翔).rar.rar

    此外,书中可能还会涉及面向对象设计原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP),这些都是设计模式背后的重要理论基础。 总的来说,《设计模式--基于C#...

    设计模式讲解,有说明有Java代码演示.pdf

    - 接口隔离原则(Interface Segregation Principle, ISP):不应该强迫客户依赖于它们不用的方法。 - 迪米特法则(最少知道原则)(Law of Demeter, LoD):又称为最少知识原则,一个软件实体应当尽可能少地与其他...

    java并发编程:设计原则与模式.rar

    面向对象的设计原则,如单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP),同样适用于并发编程。遵循这些原则可以使代码更加模块化,更易于维护和扩展,...

    2计模式-课程内容.rar

    2. **设计原则**:课程可能会详细讲解SOLID原则,包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则是指导良好面向对象设计的基础。 3. **创建...

    Java软件设计模式[最详尽=面向对象+编程原则+设计模式].rar

    - **SOLID原则**:单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)。 - **DRY(Don't Repeat Yourself)**:避免重复代码,提倡模块化和抽象化。 - **...

    03丨面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?1

    例如,SOLID原则包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。设计原则帮助我们避免常见的设计错误,提高代码的灵活性和可维护性。 设计模式是针对...

    敏捷软件开发:原则、模式与实践.pdf

    第十二章 接口隔离原则(ISP) 12.1 接口污染 12.2 分离客户就是分离接口 12.3 接口隔离原则(ISP) 12.4 类接口与对象接口 12.5 ATM用户界面的例子 12.6 结论 参考文献 第Ⅲ部分 薪水支付案例研究 第十三章 COMMAND...

    02-软件设计原则 模式深度解析和案例分析

    设计原则通常包括但不限于单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)以及依赖倒置原则(DIP)等。 - **单一职责原则** (SRP): 指一个模块或类应该只负责一项功能的变化,即一个类或...

    一故事一设计模式-LieBrother(完整版).pdf

    4. **接口隔离原则(ISP)**:提倡不应强迫客户依赖于它们不用的方法,应当为不同的客户提供不同粒度的接口,以避免不必要的耦合。 5. **迪米特法则(LoD)**:又称最少知识原则,主张一个软件实体应当尽可能少地与...

    设计模式基础培训材料-面向对象设计原则与模式

    4. **接口隔离原则(Interface Segregation Principle, ISP)** - **定义**:接口隔离原则主张每个接口应该是单一职责的,客户端不应该被迫依赖它不需要的方法。 - **目的**:减少接口的冗余性,提高系统的灵活性...

    敏捷软件开发 原则模式与实践

    2. **设计原则**:书中涵盖了设计模式和SOLID原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则有助于创建可维护、可扩展的代码结构。 3. ...

    java-设计模式

    4. **接口隔离原则(ISP)** - ISP 原则主张接口应当尽可能小且专一,避免接口中包含不必要的方法,使得客户端只使用需要的部分,减少冗余。 - 如果一个接口太大,可以将其拆分为更小的接口,以更好地满足客户需求...

    C#面向对象设计模式纵横谈(1):面向对象设计模式与原则

    4. 接口隔离原则(ISP):客户端不应该被迫依赖它不使用的方法。接口应该尽可能小且具体,避免过大的接口导致不必要的耦合。 5. 依赖倒置原则(DIP):依赖于抽象,而不是依赖于具体实现。这样可以更容易地替换实现...

    C#面向对象设计模式纵横谈(1):面向对象设计模式与原则.zip

    1. **设计原则**:面向对象设计模式的基础,如单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则指导我们编写可维护、可扩展的代码。 2. **常见设计模式*...

Global site tag (gtag.js) - Google Analytics