接口隔离原则背后的原因是什么?
接口隔离原则(ISP)表示,许多客户端特定的接口比一个通用接口更好。为什么这很重要?
接口隔离原则(ISP)表示,许多客户端特定的接口比一个通用接口更好。为什么这很重要?
ISP指出:
不应强制客户端依赖于它们不使用的方法。
ISP涉及重要的特性 - 内聚力和耦合。
理想情况下,您的组件必须经过高度定制。它提高了代码的健壮性和可维护性。
实施ISP可为您提供以下奖励:
如果你想了解更多关于软件设计原则的信息,请获取一本敏捷软件开发、原则、模式和实践手册。
接口隔离是SOLID原则上的“I”,在用第一个太深之前,让我们解释一下后者是什么意思。
SOLID 可以被视为一组由专家提出的最佳实践和建议(这意味着它们之前已经过验证),以便为我们如何设计应用程序提供可靠的基础。这些实践致力于使我们的应用程序更易于维护、扩展、调整和扩展。
我为什么要关心 SOLID 编程?
首先,你必须意识到你不会永远在你所在的地方。如果我们使用标准和众所周知的架构,我们可以确定我们的代码将很容易被我们之后的其他开发人员维护,我相信你不会想处理修复没有应用任何已知方法的代码的任务,因为它很难理解它。
接口隔离原理。
知道我们知道SOLID原则是什么,我们可以更详细地了解接口隔离原理,但是接口隔离究竟说明了什么?
“客户不应该被迫实施他们不会使用的不必要的方法”
这意味着有时我们倾向于使用很多方法制作接口,这在一定程度上可能是好的,但是这很容易被滥用,我们最终可能会得到实现空或无用方法的类,这当然会给我们的应用程序增加额外的代码和负担。想象一下,你在单个界面中声明了很多方法,如果你喜欢可视化辅助工具,一个正在实现一个接口但确实需要几个方法的类,它看起来像这样:
另一方面,如果您正确应用接口隔离并将接口拆分为较小的子集,则可以确保实现仅需要的子集:
看!更好!执行此原则将允许您具有低耦合,这有助于更好的可维护性和高抗更改性。因此,您可以真正利用接口的使用,并在真正应该实现的方法。现在让我们回顾一个不那么抽象的例子,假设你声明了一个名为Reportable的接口。
public interface Reportable {
void printPDF();
void printWord();
void printExcel();
void printPPT();
void printHTML();
}
并且您有一个客户端,它将仅以Excel格式导出一些数据,您可以实现该接口,但是您是否只需要实现Excel方法?答案是否定的,即使您不打算使用它们,您也必须为所有方法的实现编写代码,这可能会导致大量垃圾代码,从而使代码难以维护。
记住保持简单,不要重复自己,你会发现你已经在不知情的情况下使用了这个原则。