基于接口而非实现编程

基于接口而非实现编程

“接口”就是一组“协议”或者“约定”,是功能提供者提供给使用者的一个“功能列表”。

基于接口而非实现编程,可以将接口和实现相分离,封装不稳定的实现,暴露稳定的接口。
上游系统面向接口而非实现编程,不依赖不稳定的实现细节,当实现发生变化的时候,上游系统的代码基本上不需要做改动,以此来降低耦合性,提高扩展性。

“基于接口而非实现编程”这条原则的另一个表述方式,是“基于抽象而非实现编程”。后者的表述方式其实更能体现这条原则的设计初衷。
在软件开发中,最大的挑战之一就是需求的不断变化,这也是考验代码设计好坏的一个标准。
越抽象、越顶层、越脱离具体某一实现的设计,越能提高代码的灵活性,越能应对未来的需求变化。
好的代码设计,不仅能应对当下的需求,而且在将来需求发生变化的时候,仍然能够在不破坏原有代码设计的情况下灵活应对。
而抽象就是提高代码扩展性、灵活性、可维护性最有效的手段之一。

基于接口而非实现编程的三条细则

  1. 函数的命名不能暴露任何实现细节。
  2. 封装具体的实现细节。
  3. 为实现类定义抽象的接口。具体的实现类都依赖统一的接口定义,遵从一致的功能协议。使用者依赖接口,而不是具体的实现类来编程。

总结

我们在做软件开发的时候,一定要有抽象意识、封装意识、接口意识。在定义接口的时候,不要暴露任何实现细节。
接口的定义只表明做什么,而不是怎么做。而且,在设计接口的时候,我们要多思考一下,这样的接口设计是否足够通用,是否能够做到在替换具体的接口实现的时候,不需要任何接口定义的改动。

猜你喜欢

转载自www.cnblogs.com/Utah-Lee/p/12391520.html
今日推荐