`
xiaoyaocai
  • 浏览: 39602 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Interface Segregation Principle(ISP,接口隔离原则)(转载)

阅读更多

Many client specific interfaces are better than one general purpose interface.

多个各客户端相关的接口优于一个通用接口。

ISP是另一种使组件得以广泛应用的技术。(The ISP is another one of the enabling technologies supporting component substrates such as COM).

这个原则本质很简单:如果你有一个类为多个客户提供服务,与其直接使用该类,不如为各客户的应用分别创建接口,再让这个类继承这些接口。好处是类的修改对这些客户透明,只要维持接口不变即可,即使以后这些接口由不同的类来实现,客户端也不会感知或需要修改。本质还是功能的内聚性。每个客户使用的功能有一定的内聚性,按这种内聚性来实现接口,比一个大一统的胖接口,更能准确表达接口要实现的功能,也更便于修改接口。

5 Principle of Package Architecture

在设计中类是必须的,但仅有类对设计是不够的。更大粒度上的包可以帮助我们让类更有序。但我们如何决定将哪些类放入哪些包中?下面三则包的内聚性准则可以参考。

1) The Release Reuse Equivalency Principle(REP)

The granule of reuse is the granule of release.

重用粒度即发布粒度。

2) The Common Closure Principle(CCP)

Classes that change together, belong together.

一起变动的类组织在一起

3) The Common Reuse Principle(CRP)

Classes that aren't reused together should not be grouped together.

不在一起重用的类不要组织在一起。

6 The Package Coupling Principles

1) The Acylic Dependencies Principle(ADP)

The dependencies between packages must not form cycle

包之间不得出现循环依赖。

循环依赖对工程的破坏性每个做过上规模项目的人都会深有体会。那么如何解除循环依赖,如原来A中部分功能要依赖于B,而要在B中加入的新功能又依赖于A,怎么办?有几个简单的办法:

a.将要加入的新功能放到一个新的包中去,使其依赖于A与B,这要就是一个依赖链,避免了循环依赖。

b.将A,B中为对方所依赖的功能抽象成接口,然后A,B都针对接口编程,这样A,B都只依赖于抽象接口,而没有了彼此的依赖。

2) The Stable Dependencies Principle

Depend in the direction of stability.

沿着稳定性的方向依赖。

即易变的模块依赖于稳定的模块,而非相反。何者易变?何者罕变?无依赖者罕变,依赖多者易变,盖其依赖者一变,其多相应变矣。

3) The Stable Abstraction Principle

Stable package should be abstract packages.

依赖链中低端难变,而上端易变。但按OCP原则,低端虽难变但不应难于扩展。故其应高度抽象以备扩展之需。

具象易变,抽象罕变。抽象居下以定架构,具象居上以扩功能。故具象依赖于抽象,而非抽象依赖于具象。

http://www.iteye.com/wiki/jvm?category_id=301

 

分享到:
评论

相关推荐

    Interface Segregation Principle

    接口隔离原则(Interface Segregation Principle, ISP)是面向对象设计中SOLID原则的第五个原则,旨在解决接口设计中的一些问题,以提升代码的模块化和减少不必要的依赖。Robert C. Martin(通常被称为“鲍勃叔叔”...

    接口隔离原则 接口隔离原则

    接口隔离原则(Interface Segregation Principle,ISP)是设计模式中的一个重要原则,它是 SOLID 原则之一。SOLID 是面向对象设计的五个基本原则的首字母缩写,由 Robert C. Martin 提出,旨在使软件设计更加灵活、...

    接口隔离原则ISP.zip

    接口隔离原则(Interface Segregation Principle,简称ISP)是软件设计中的一个重要原则,它在面向对象的设计模式中占有核心地位。这个原则由罗伯特·C·马丁(Robert C. Martin)在其著作《Clean Architecture》中...

    c++接口隔离原则1

    接口隔离原则(Interface Segregation Principle,ISP)是C++中的一个重要设计原则,它旨在降低类之间的耦合性,提高系统的灵活性和可维护性。本文将详细介绍接口隔离原则的定义、优点、实现方法和应用实例。 定义 ...

    IOS设计模式的六大设计原则之接口隔离原则(ISP,Interface Segregation Principle)-附件资源

    IOS设计模式的六大设计原则之接口隔离原则(ISP,Interface Segregation Principle)-附件资源

    深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解

    本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle)。 英文原文:...

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

    接口隔离原则(Interface Segregation Principle, ISP)是面向对象设计的SOLID原则之一,它强调了接口设计的灵活性和针对性。ISP指出,一个类不应该被迫依赖它不需要的接口,即类之间的依赖关系应当建立在最小化的...

    Java_面向对象设计原则总结

    3 接口分隔原则-Interface Segregation Principle (ISP) 4 单一职责原则-Single Responsibility Principle (SRP) 5 开闭原则-The Open-Closed Principle (OCP)   二 包的设计原则 6 重用发布等价原则-...

    springBoot+mybatis+isp+文档

    ISP(Interface Segregation Principle,接口隔离原则)是面向对象设计的SOLID原则之一,用于提高代码的灵活性和可维护性。在这个项目中,"springBoot+mybatis+isp"的组合意味着开发者遵循了最佳实践,将SpringBoot...

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

    接口隔离原则(Interface Segregation Principle, ISP)是PHP面向对象编程中的一个重要概念,它是面向对象设计的五大原则(SOLID)之一。ISP主张一个类不应该被迫实现它不需要的方法,也就是说,客户端应该只依赖于...

    面向对象设计原则

    ### 接口隔离原则 (ISP, Interface Segregation Principle) 接口隔离原则提倡创建多个专门的接口,而不是使用单一的通用接口。这样可以让实现类只实现自己需要的方法,而不需要实现那些永远不会用到的方法。这可以...

    JAVA六大原则代码.zip

    这个压缩文件包含了与JAVA编程相关的六大原则的实例代码。这些原则被称为SOLID原则,是Robert C. Martin等软件工程师提出的一组设计原则。...接口隔离原则(Interface Segregation Principle,ISP):不应该强迫一个

    深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP

    前言 Bob大叔提出并发扬了S.O.L.I...The Interface Segregation Principle(接口分离原则ISP) The Dependency Inversion Principle(依赖反转原则DIP) 五大原则,我相信在博客园已经被讨论烂了,尤其是C#的实现,但是

    了解SOLID设计原则和JAVA设计模式的代码示例.zip

    SOLID代表Single Responsibility Principle(单一职责原则)、Open-Closed Principle(开闭原则)、Liskov Substitution Principle(里氏替换原则)、Interface Segregation Principle(接口隔离原则)和Dependency ...

    cis-3285-unit-13-interface-segregation-PJRubin:cis-3285-unit-13-interface-segregation-PJRubin由GitHub Classroom创建

    【标题】 cis-3285-unit-13-interface-segregation-PJRubin:这是一个关于接口隔离原则(Interface Segregation Principle, ISP)的学习项目,由GitHub Classroom创建。ISP是面向对象设计中的一个重要原则,旨在避免...

    php接口隔离原则实例分析

    接口隔离原则(Interface Segregation Principle,简称ISP)是面向对象设计原则之一,主要强调的是客户端应该依赖于它需要的接口而不是被大量的接口所依赖。在PHP中实现这一原则意味着要设计出精简的、专门化的接口...

    面向对象七大基本设计原则.pdf

    在Java中,接口(Interface)是实现ISP原则的关键,它允许我们定义多个细粒度的接口以提供更具体的服务,而不是使用单一的、功能繁多的接口。 文档中还提及了OOD中的Law of Demeter(迪米特法则),又称为最少知识...

    软件架构设计的6大原则.pdf

    5. 接口隔离原则(Interface Segregation Principle - ISP) 接口隔离原则是指一个类与另一个类之间的依赖性,应该依赖于尽可能小的接口。这个原则强调了接口的实用性和精简性,防止接口的臃肿和不必要的暴露。应用...

    java面向对象设计的六大原则

    DIP)、接口隔离原则(Interface Segregation Principle, ISP)以及合成/聚合复用原则(Composite/Aggregate Reuse Principle, CARP)。 #### 1. 单一职责原则(Single Responsibility Principle, SRP) - **定义...

Global site tag (gtag.js) - Google Analytics