美文网首页
面向对象(六)--基于接口而非实现编程

面向对象(六)--基于接口而非实现编程

作者: 凯玲之恋 | 来源:发表于2020-04-09 22:40 被阅读0次

基于接口而非实现编程

1、如何解读原则中的“接口”二字?

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

“接口”在不同的应用场景下会有不同的解读,比如服务端与客户端之间的“接口”,类库提供的“接口”,甚至是一组通信的协议都可以叫作“接口”。

刚刚对“接口”的理解,都比较偏上层、偏抽象,与实际的写代码离得有点远。

如果落实到具体的编码,“基于接口而非实现编程”这条原则中的“接口”,可以理解为编程语言中的接口或者抽象类

应用这条原则,可以将接口和实现相分离,封装不稳定的实现,暴露稳定的接口。

最大的挑战之一就是需求的不断变化,这也是考验代码设计好坏的一个标准。

越抽象、越顶层、越脱离具体某一实现的设计,越能提高代码的灵活性,越能应对未来的需求变化。

抽象就是提高代码扩展性、灵活性、可维护性最有效的手段之一。

2、如何将这条原则应用到实战中?

在编写代码的时候,要遵从“基于接口而非实现编程”的原则,具体来讲,我们需要做到下面这 3 点

  • 1、函数的命名不能暴露任何实现细节。
  • 2、封装具体的实现细节
  • 3、为实现类定义抽象的接口。具体的实现类都依赖统一的接口定义,遵从一致的上传功能协议。

很多人在定义接口的时候,希望通过实现类来反推接口的定义。

接口的定义只表明做什么,而不是怎么做。

接口设计是否足够通用,是否能够做到在替换具体的接口实现的时候,不需要任何接口定义的改动。

3、是否需要为每个类定义接口?

做任何事情都要讲求一个“度”,过度使用这条原则,非得给每个类都定义接口,接口满天飞,也会导致不必要的开发负担。

这条原则的设计初衷是,将接口和实现相分离,封装不稳定的实现,暴露稳定的接口。

如果在我们的业务场景中,某个功能只有一种实现方式,未来也不可能被其他实现方式替换,那我们就没有必要为其设计接口,也没有必要基于接口编程,直接使用实现类就可以了

越是不稳定的系统,我们越是要在代码的扩展性、维护性上下功夫。相反,如果某个系统特别稳定,在开发完之后,基本上不需要做维护,那我们就没有必要为其扩展性,投入不必要的开发时间。

参考

09 | 理论六:为什么基于接口而非实现编程?有必要为每个类都定义接口吗?

相关文章

  • 面向对象(六)--基于接口而非实现编程

    基于接口而非实现编程 1、如何解读原则中的“接口”二字? 从本质上来看,“接口”就是一组“协议”或者“约定”,是功...

  • 面向对象:基于接口而非实现编程

    基于接口而非实现编程。这个原则是一种非常有效的提高代码质量的手段。越抽象、越顶层、越脱离具体某一实现的设计,越能提...

  • 基于接口而非实现编程

    “基于接口而非实现编程”这条原则的另一个表述方式,是“基于抽象而非实现编程”。后者的表述方式其实更能体现这条原则的...

  • 09 | 理论六:为什么基于接口而非实现编程?有必要为每个类都定

    基于接口而非实现编程这条原则的另一个表述方式是"基于抽象而非实现编程". 后者表述的方式其实更能体现这条原则的设计...

  • 介绍js中的原型

    原型 编程语言对面向对象的实现主流的有两种方式:基于类的面向对象和基于原型的面向对象。 基于类的面向对象 典型的语...

  • JavaScript进阶知识点--JS面向对象

    面向对象 对代码的一种抽象,对外同一提供调用接口的编程思想 基于原型的面向对象 基于原型的面向对象方式中,对象(o...

  • MyBatis之使用注解开发

    六、使用注解开发 目录:面向接口编程、使用注解开发、CRUD、Lombok 1.面向接口编程 之前都学过面向对象编...

  • 面向对象设计基础&原则

    面向对象设计基础 抽象 封装 继承 多态 面向对象设计原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程

  • 设计模式简介

    节选自菜鸟教程 面向对象设计原则: 对接口编程而不是对实现编程。 优先使用对象组合而不是继承。 设计模式的六大原则...

  • Android 面向接口编程

    关键词:Android、POP、面向接口编程 、面向过程、面向协议 一、概述 面向接口编程是面向对象编程的一种实...

网友评论

      本文标题:面向对象(六)--基于接口而非实现编程

      本文链接:https://www.haomeiwen.com/subject/jhhkmhtx.html