设计模式-接口隔离原则

一般的系统设计都需要系统设计架构图,图中会将系统整体按照几个不同维度的模块进行拆分,以达到模块之间高内聚、低耦合的效果,协同完成系统的各项功能。同样,在应用程序设计的时候,我们也需要对模块、接口进行拆分,这种拆分的依据(原则)就是接口隔离原则。

一、接口隔离原则概念

接口隔离原则(Interface Segregation Principle,ISP)目的是为了实现不同模块、接口之间高内聚、低耦合。对于接口(或模块,下同)的客户端(使用方)来说,客户端不应该依赖它不需要的接口方法。比如客户端仅需要A功能的方法,但是由于不合理的接口设计,客户端依赖A接口时还提供了功能B方法。在系统程序内部,不同功能也会有相互依赖关系,这种类间的依赖关系也应当是建立在最小的接口之上
为什么要隔离,或者说为什么要建立在最小接口之上?接口隔离原则要求接口对客户端的承诺越少越好,这样如果某客户端需要发生改动,就能更小限度的影响其他客户端,有利于程序的稳定性、扩展性、可维护性。

二、接口隔离原则应用

根据接口隔离原则的目的,可以通过以下几个方面设计、评价接口的设计。

2.1 低耦合

对于设计的接口来说,接口应尽可能小,不要出现臃肿的接口。但是如果接口无限制划分,如一个方法一个接口,也会导致类激增、项目复杂化、不易维护的情况。如何衡量接口划分的最小粒度呢?单一职责原则
前面说了,单一职责的划分是针对接口和类的。对于接口而言,也是根据业务逻辑进行划分的。如前所述,对于客服中心而言,手机就需要一个接口即可。而对于手机制造厂商来说,手机就需要提供2个接口向外提供服务了,分别是协议管理服务【客户只关系协议处理】以及数据传送服务【客户只关系数据传送】。

2.2 高内聚

接口高内聚指的是接口要尽可能少暴露public方法。接口是对外的约定,越少对系统的开发更有利更可控、更容易后期降低成本。
比如在商品库存服务中,扣减库存存在以下两种情况:① 单品扣减 ② 多品扣减;如果你同时暴露两个接口出去,在后续产品迭代时就要维护两个接口,比如参数校验、接口限流等。完全可以统一使用一个多品扣减接口代替,将单品扣减内聚在自身服务中,不暴露出去。后续只需要维护多品一个接口即可。

3. 定制服务

项目改造阶段,在有必要的情况下,需要考虑拆分系统接口,降低系统风险。因为在项目迭代的过程中,接口依赖的下游层次不齐,使得不同业务之间影响严重。比如有的下游响应耗时低,有的下游响应耗时高。这将导致自身接口性能下降,可以根据耗时情况进行接口拆分,提供长耗时接口,使得短耗时接口稳定性提高,并且也提高了系统监控、维护能力。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值