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

本文详细阐述了接口隔离原则(ISP)的基本概念与实践方法。ISP强调客户端不应依赖于不需要的接口,提倡接口细化以增强系统的灵活性。文章还讨论了接口设计的注意事项与最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

接口隔离包含两层意思:

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

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

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

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

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

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

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

2. 定制服务

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

 3.接口设计是有限度的

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

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

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

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

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

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

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

 

转载于:https://www.cnblogs.com/wisdo/p/4178708.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值