五大设计原则------接口隔离原则

在讲接口隔离原则之前,先明确一下接口,这里据说的接口分为两种: 1. 实例接口(Object Interface),就是声明一个类,然后用 new 关键字产生一个实例,它是对一个类型事物的描述,这是一种接口。

2. 类接口(Classs Interface) ,就是指用 Interface 关键字定义的接口。

接口隔离包含两层意思:

1.客户端不应该依赖于它不需要的接口

2.类间的依赖关系应该建立在最小的接口上。

针对1就是指客户端应该依赖于它需要的接口,通俗地说就是: 客户端需要什么接口就提供什么接口,把不需要的接口删除掉,那就要对接口进行细化,保证其简洁性。

针对2,指的是它标示是最小的接口,也是要求接口细化,和第一层的意思相同。

可以把这两个定义概括成一句话: 建立单一接口,不要建立臃肿庞大的接口,再通俗一点就是:接口尽量细化,同时接口中的方法尽量少。

接口隔离原则与单一职责原则是不同的,因为两者的审视角度是不同的。单一职责要求的是类和接口的职责单一,注重的是职责,这是业务逻辑上的划分,而接口隔离原则要求接口的方法尽量少,提供给每个模块的都应该是单一接口。

根据接口隔离原则拆分接口时,首先必须满足单一职责原则。 接口设计原则: 1.接口要高内聚    高内聚就是提高接口、类、模块的处理能力,减少对外的交互。

2. 定制服务

一个系统或系统骨的模块之间必然会有耦合,有耦合就要有相互的接口(不一定是定义的 Interface ,也可能是一个类或单纯的数据交换),我们在设计时就需要为各个 访问者(即客户端)定制服务,定制服务已经单独为一个个体提供优良的服务。采用定制服务就必然有一个要求:只提供访问者需要的方法。

3.接口设计是有限度的

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

最佳实践: 接口隔离原则紧接口的定义,同时也是对类的定义。接口和类尽量使用原子接口或原子类来组装。但是,这个原子该 怎么划分是设计模式中的一大难题,在实战中根据以下几个规则来衡量:

1. 一个接口只服务于一个模块或业务逻辑

2. 通过业务逻辑压缩接口上的 public 方法,接口时常去回顾,尽量让接口达到 “满身筋骨肉”,而不是‘肥嘟嘟“的一大堆方法

3. 已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器的模式时行转化处理。

4.了解环境,拒绝盲从。每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同,深入了解业务逻辑。

接口隔离原则和其它设计原则一样,都需要花费较多的时间和精力来进行设计和筹划,但是它带来了设计的灵活性,如果接口太大,灵活性降低,无法提供定定制服务,给整体项目带来无法预料的风险。

时间: 2024-10-11 23:07:33

五大设计原则------接口隔离原则的相关文章

设计模式之六大原则——接口隔离原则(ISP)

设计模式之六大原则——接口隔离原则(ISP) 转载于:http://www.cnblogs.com/muzongyan/archive/2010/08/04/1792528.html 接口隔离原则 Interface Segregation Principle    定义: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 我们可以把这两个定义概括为一句话:建立单一接口,不要建立臃肿庞大的接口.再通俗一点讲:接口尽量细化,同时接口中的方法尽量少. 提供给每个模块的都应该是单一

Java设计原则—接口隔离原则(转)

接口隔离原则 Interface Segregation Principle    定义: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 我们可以把这两个定义概括为一句话:建立单一接口,不要建立臃肿庞大的接口.再通俗一点讲:接口尽量细化,同时接口中的方法尽量少. 提供给每个模块的都应该是单一接口,提供给几个模块就应该有几个接口,而不是建立一个庞大的臃肿的接口,容纳所有的客户端访问. 接口是我们设计时对外提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提高系统的灵

六大设计原则--接口隔离原则【 Interface Segregation Principle】

声明:本文内容是从网络书籍整理而来,并非原创. 定义 第一种定义: 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. 类间的依赖关系应该建立在最小的接口上. 两种定

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

接口隔离原则一:什么是接口?● 实例接口(Object Interface)        ---->Person zhangSan=new Person()产生了一个实例,这个实例要遵从的标准就是Person这个类,Person类就是zhangSan的接口● 类接口(Class Interface)        ---->Java中经常使用的interface关键字定义的接口. 二:那什么是隔离呢?它有两种定义:      ---->事物的定义一般都比较难理解,晦涩难懂是正常的.我们

OOAD-7 面向对象设计七原则--接口隔离原则

接口隔离原则的定义 接口隔离原则要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法 2002 年罗伯特·C.马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use).该原则还有另外一个定义:一个类对另一个类的依赖应该建立在最小的接口上(The dependency of one class to another o

面向对象原则之一 接口隔离原则

原文:面向对象原则之一 接口隔离原则 前言 面向对象有人分为五大原则,分别为单一职责原则.开放封闭原则.依赖倒置原则.接口隔离原则.里氏替换原则. 也有人分为六大原则,分别为单一职责原则.开放封闭原则.依赖倒置原则.接口隔离原则.里氏替换原则.迪米特法则. 现在我们来介绍接口隔离原则 接口隔离原则 1)概念 客户端不应该依赖它不需要的接口.一个类对另一个类的依赖应该建立在最小的接口上. 怎么理解呢?通俗一点就是说接口尽量细分,把不需要的方法尽量写在2个不同的接口上. 假如我有一个接口Interf

设计模式原则之接口隔离原则

在讲接口隔离原则之前,我们先明确一下我们的主角,什么是接口,接口分为两种: 一种是实例接口 (Object Interface),在 Java 中声明一个类,然后用 new 关键字产生的一个实例,它是对一个类型的事 物描述,这是一种接口,比如你定义个 Person 这个类,然后使用 Person zhangSan = new Person()产生了 一个实例,这个实例要遵从的标准就是 Person 这个类,Person 类就是 zhangSan 的接口,看不懂?不要紧, 那是让 Java 语言浸

设计原则之接口隔离原则

segregate   v.隔离 se 蛇  gre green格林  gate门 蛇被格林用门隔离了. 设计原则之接口隔离原则 动机:         客户不应该被强制实现他们不用的方法.应该用多个小的接口代替庞大功能全的接口. 结论:        该原则在代码设计的时候就要考虑.可以使用适配器模式将胖接口隔离. Bad Example:    缺点:         1.如果新增一个robot机器人工人,那么eat方法就是多余的了. // interface segregation pri

设计模式 之 设计的 六大原则(4) 接口隔离原则

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