8、面向对象-抽象特性:面向接口而非实现编程

越抽象、越顶层、越脱离具体某一实现的设计,越能提高代码的灵活性,越能应对未来的需求变化。好的代码设计,不仅能应对当下的需求,而且在将来需求发生变化的时候,仍然能够在不破坏原有代码设计的情况下灵活应对。
基于接口而非实现(又名基于抽象而非实现)编程就是一种非常有效的提高代码质量的手段,上游系统面向接口而非编程,不依赖不稳定的实现细节,这样当实现发生变化的时候,上游系统的代码不需要做改动,以此来降低耦合性,提升扩展性。不过这条原则也经常被过度使用。

一、接口

从本质上来看,接口就是一组协议或约定,是功能提供者提供给使用者的一个功能列表。落实到具体的编码,“基于接口而非实现编程”这条原则中的接口则可以理解为编程语言中的接口或抽象类。

二、应用

做设计的时候要有接口意识。除了编程开发,在架构设计、系统设计上也要注意基于接口而非实现编程原则,如服务端与客户端的API设计。
1、为实现类定义抽象的接口,接口中的函数命名要通用,不能暴露任何实现细节。
2、先设计接口,再实现。与特定实现有关的方法不要定义接口,如uoloadToAliyun。
3、封装具体的实现细节。

三、避免过度使用

这条原则的初衷是将接口和实现相分离,封装不稳定的实现,暴露稳定的接口。
如果在我们的业务场景中,某个功能只有一种实现方式,未来也不可能被其他实现方式替换,那我们就没有必要为其设计接口,也没有必要基于接口编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值