接口隔离原则_想做软件开发得先搞懂软件的设计原则—SOLID原则之接口隔离

本文介绍了SOLID原则中的接口隔离原则(ISP),指出接口应被隔离以避免强迫实现者实现不必要的功能。通过多功能机器的示例,展示了如何将大而复杂的接口拆分为更小、更具针对性的接口,如IPrinter、IScanner和IFax,以允许实现者仅实现所需功能。这有助于提高代码的灵活性和可维护性。
摘要由CSDN通过智能技术生成
06ca0ad62dab01816efb30ec6455e7c8.png

SOLID-接口隔离原则(ISP)

上一篇文章我们学习了SOLID中的里氏替换原则(L),如果还不了解里氏替换原则的小伙伴可以先去看了我的这篇文章再回来噢想做软件开发得先搞懂软件的设计原则—SOLID原则之里氏替换


今天我们学习的是SOLID中的I,也就是接口隔离原则;

接口隔离原则的思想是将复杂接口的各个部分分离为单独的接口,以避免迫使客户机实现它们实际上并不需要的功能。每当您为一些复杂的应用程序编写插件时,您遇到一个接口,该接口有20个令人困惑的方法,要用各种各样的无操作和返回空值来实现时,API的作者很可能违反了ISP。

下面我们就举个例子来说明一下:

假设你要定义一台多功能机器,它有打印,扫描和传真功能:

public interface IMachine{void Print(Document d);void Fax(Document d);void Scan(Document d);}

这是一个问题,因为这个接口的一些实现者可能不需要扫描或传真,只需要打印。然而你却强迫他们去实现那些额外的特性。当然,它们都可以是无操作的,但为什么要为此烦恼呢?

ISP建议将接口分开,这样实现者就可以根据他们的需要进行选择。由于打印和扫描是不同的操作(例如,扫描仪不能打印),我们为它们定义了单独的接口:

public interface IPrinter{void Print(Document d);}public interface IScanner{void Scan(Document d);}public interface IFax{  void Fax(Document d);}

然后打印机可以只实现打印功能,没有其他东西:

public class Printer : IPrinter{  public void Print(Document d)  {  // 实现代码  }}

类似地,如果我们想实现复印机,我们可以通过实现IPrinterIScanner接口来实现:

public class Photocopier : IPrinter, IScanner{  public void Print(Document d) { ... }  public void Scan(Document d) { ... }}

所以简单地说就是我们要细分接口,尽量避免出现没有意义或者让人迷惑的东西;


好啦,今天的学习就到这里,接口隔离原则大家都懂了吗?下次我们学习SOLID中的最后一个原则,依赖倒置原则(DIP),记得关注噢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值