5.接口隔离原则

一、定义

  客户端不应该依赖那些它不需要的接口;或者一旦接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。
在这里插入图片描述

二、接口隔离原则分析

  接口隔离原则是指使用多个专门的接口,而不使用单一的总接口。每一个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。

  (1) 一个接口就只代表一个角色,每个角色都有它特定的一个接口,此时这个原则可以叫做“角色隔离原则”。
在这里插入图片描述

  (2)接口仅仅提供客户端需要的行为,即所需的方法,客户端不需要的行为则隐藏起来,应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口。

  (3)使用接口隔离原则拆分接口时,首先必须满足单一职责原则,将一组相关的操作定义在一个接口中,且在满足高内聚的前提下,接口中的方法越少越好。

  可以在进行系统设计时采用定制服务的方式,即为不同的客户端提供宽窄不同的接口,只提供用户需要的行为,而隐藏用户不需要的行为。

三、实例

  开发人员针对某CRM系统的客户数据显示模块设计了如图所示接口,其中

dataRead()用于从文件中读取数据,

transformToXML()用于将数据转换成XML格式,

方法createChart()用于创建图表,

displayChart()用于显示图表,

createReport()用于创建文字报表,

displayReport()用于显示文字报表。

在这里插入图片描述
  CustomerDataDisplay 是一个接口,ConcreteClass 是实现接口具体类。客户端要显示数据就调用接口里面的方法。

1.存在问题

  问题1:接口承担了太多的职责,导致该接口的实现类很庞大,实现类中都需要实现接口所有方法,灵活性较差,如果出现大量的空方法,将导致系统中产生大量的无用代码,影响代码质量;
在这里插入图片描述

  (1)比如说,如果读取出来的数据本身就是 XML 格式的,无须转换,就会导致实现接口中的转换格式方法为空方法。

  (2)如果仅需要创建和显示图表,除了需实现与图表相关的方法外,还需要实现创建和显示文字报表的方法,否则程序编译时将报错

  问题2:由于客户端针对大接口编程,将在一定程度上破坏程序的封装性,客户端看到了不应该看到的方法,没有为客户端定制接口。
在这里插入图片描述

2.重构

  因此需要按照接口隔离原则和单一职责原则进行重构

  将其中的一些方法封装在不同的小接口中,确保每一个接口使用起来都较为方便,并都承担某一单一角色,每个接口中只包含一个客户端(如模块或类)所需的方法即可。

在这里插入图片描述

四、总结

  接口隔离原则就是将大的接口(承担功能过多的),分隔成小的接口(功能简单的)。

  就像生活中的工具,商家在生成的时候,不会将很多工具像冰糖葫芦一样粘连地制作在一项工具上。
在这里插入图片描述

而是将每项工具分开,给客户根据自己的需求去选购工具。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值