设计模式之面向接口编程

Posted 面向岁月编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之面向接口编程相关的知识,希望对你有一定的参考价值。

越抽象、越顶层、越脱离具体某一实现的设计,越能提高代码的灵活性,越能应对未来的需求变化。好的代码设计,不仅能应对当下的需求,而且在将来需求发生变化的时候,仍然能够在不破坏原有代码设计的情况下灵活应对

极客时间·王争


对于“接口”的理解

大家应该都知道 “基于接口而非实现编程” 这条规则,其实这条规则可以理解为【基于抽象而非实现实现编程】。我们不必要把接口看的过于具体,就认为这里的接口就是我们Java中的interface。其实这里的接口就是抽象。


如何将这条规则应用到程序中

  1. 函数的命名不能暴露任何实现细节。比如,前面提到的 uploadToAliyun() 就不符合要求,应该改为去掉 aliyun 这样的字眼,改为更加抽象的命名方式,比如:upload()。 

  2. 封装具体的实现细节。比如,跟阿里云相关的特殊上传(或下载)流程不应该暴露给调用者。我们对上传(或下载)流程进行封装,对外提供一个包裹所有上传(或下载)细节的方法,给调用者使用。

  3. 为实现类定义抽象的接口。具体的实现类都依赖统一的接口定义,遵从一致的上传功能协议。使用者依赖接口,而不是具体的实现类来编程


除了以上三条原则外,还有很多人在定义接口的时候习惯先写实现类的代码然后再反推接口定义(偷笑:我以前就是这种人)。这样会导致你定义的接口可能不够抽象。建议要仔细检查自己定义的接口是不是够抽象,接口设计够不够通用。


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

答案:否

因为这样就过于极端,万物有度。我们的代码主要是将不稳定需要维护的地方抽离出来,让这部分的代码调整可以做到开闭原则描述的那样。


https://time.geekbang.org/column/article/7964a9e7f9d8352756f38b1421619d79/share?code=XclOhmvRxVEzclI7v6TadCyeCB6PHcTp0fpjUCibm74%3D&oss_token=0545ab819e95f793





以上是关于设计模式之面向接口编程的主要内容,如果未能解决你的问题,请参考以下文章

面向接口编程之三——模式研究

面向接口设计和编程——(面向对象面向接口面向过程面向实现) --转载

面向对象的设计模式之依赖倒置原则

Java 设计模式 Day3 之面向抽象原则:什么是面向抽象编程?面向抽象编程如何应用?

Java 设计模式 Day3 之面向抽象原则:什么是面向抽象编程?面向抽象编程如何应用?

接口抽象类应用之策略模式学习