大数据&云计算|为什么基于接口而非实现编程?有必要为每个类都定义接口吗?( 三 )
除此之外 , 很多人在定义接口的时候 , 希望通过实现类来反推接口的定义 。 先把实现类写
好 , 然后看实现类中有哪些方法 , 照抄到接口定义中 。 如果按照这种思考方式 , 就有可能导
致接口定义不够抽象 , 依赖具体的实现 。 这样的接口设计就没有意义了 。 不过 , 如果你觉得
这种思考方式更加顺畅 , 那也没问题 , 只是将实现类的方法搬移到接口定义中的时候 , 要有
选择性的搬移 , 不要将跟具体实现相关的方法搬移到接口中 , 比如 AliyunImageStore 中
的 generateAccessToken() 方法 。
总结一下 , 我们在做软件开发的时候 , 一定要有抽象意识、封装意识、接口意识 。 在定义接
口的时候 , 不要暴露任何实现细节 。 接口的定义只表明做什么 , 而不是怎么做 。 而且 , 在设
计接口的时候 , 我们要多思考一下 , 这样的接口设计是否足够通用 , 是否能够做到在替换具
体的接口实现的时候 , 不需要任何接口定义的改动 。
是否需要为每个类定义接口?
本文插图
看了刚刚的讲解 , 你可能会有这样的疑问:为了满足这条原则 , 我是不是需要给每个实现类都定义对应的接口呢?在开发的时候 , 是不是任何代码都要只依赖接口 , 完全不依赖实现编程呢?
做任何事情都要讲求一个“度” , 过度使用这条原则 , 非得给每个类都定义接口 , 接口满天飞 , 也会导致不必要的开发负担 。 至于什么时候 , 该为某个类定义接口 , 实现基于接口的编程 , 什么时候不需要定义接口 , 直接使用实现类编程 , 我们做权衡的根本依据 , 还是要回归到设计原则诞生的初衷上来 。 只要搞清楚了这条原则是为了解决什么样的问题而产生的 , 你就会发现 , 很多之前模棱两可的问题 , 都会变得豁然开朗 。 前面我们也提到 , 这条原则的设计初衷是 , 将接口和实现相分离 , 封装不稳定的实现 , 暴露稳定的接口 。 上游系统面向接口而非实现编程 , 不依赖不稳定的实现细节 , 这样当实现发生变化的时候 , 上游系统的代码基本上不需要做改动 , 以此来降低代码间的耦合性 , 提高代码的扩展性 。
从这个设计初衷上来看 , 如果在我们的业务场景中 , 某个功能只有一种实现方式 , 未来也不可能被其他实现方式替换 , 那我们就没有必要为其设计接口 , 也没有必要基于接口编程 , 直接使用实现类就可以了 。
除此之外 , 越是不稳定的系统 , 我们越是要在代码的扩展性、维护性上下功夫 。 相反 , 如果某个系统特别稳定 , 在开发完之后 , 基本上不需要做维护 , 那我们就没有必要为其扩展性 , 投入不必要的开发时间 。
【来源:亮亮怪聊星座】
声明:转载此文是出于传递更多信息之目的 。 若有来源标注错误或侵犯了您的合法权益 , 请作者持权属证明与本网联系 , 我们将及时更正、删除 , 谢谢 。邮箱地址:newmedia@xxcb.cn
【大数据&云计算|为什么基于接口而非实现编程?有必要为每个类都定义接口吗?】
推荐阅读
- 智能穿戴|漫步者DreamPods体验:外观精致佩戴舒适降噪是最大惊喜
- 数据|智领云荣登“中国大数据企业50强” | 2020大数据产业生态大会盛大召开
- 大数据|华云数据荣获中国大数据50强、2020数字赋能先锋企业30强,入选大数据产业发展白皮书及百佳案例
- 驱动中国|即信Fintech智研中心:银行践行社交化运营的要诀--渠道通 交互通 数据通
- 行业互联网|华云数据荣获中国大数据50强、2020数字赋能先锋企业30强,入选大数据产业发展白皮书及百佳案例
- 技术编程|数据结构001之简介
- 行业互联网|爱数亮相第八届医药健康论坛,以数据赋能药企数字化
- 技术编程|边缘云计算到底是什么?
- 行业互联网|智领云荣登“中国大数据企业50强”| 大数据产业生态大会
- 互联网|图匠数据CTO梁柱锦:利用AI与大数据提升线下零售管理能力 | 公开课预告
