设计模式:基于接口而非实现编程原则用解耦提高代码扩展性

文章讲述了抽象类和接口在编程中的区别,抽象类用于代码复用,解决is-a关系,而接口关注行为特性,解决has-a关系,提高解耦。文章强调了设计原则——基于接口而非实现编程,该原则有助于降低耦合性和提高扩展性,例如在文件存储场景中,通过接口实现不同云服务的切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、抽象类和接口区别

1、抽象类

(1)特性:

不能被实例化,只能被继承

可以包含属性和方法

方法既可包含代码实现,也可不包含代码实现,不包含代码实现的方法叫抽象方法

子类继承抽象类,必须实现抽象方法

(2)作用

对成员变量和方法的抽象

是一种is-a关系,解决代码复用问题,自下而上设计,先有子类代码重复,然后再抽象成上层父类

2、接口

(1)特性:

不含有属性,只能声明方法

方法不能包含代码实现

类实现接口必须实现声明方法

(2)作用

仅对方法的抽象

是一种has-a关系,表示具有某一组行为特性,是为了解决解耦问题,提高代码的扩展性

二、设计原则:基于接口而非实现编程

1、定义:

接口实现接口和实现分离,封装不稳定的实现,暴露稳定的接口,上游系统面向接口而非实现编程,当实现变化,上游代码基本不需要变,以此来降低耦合性,提高扩展性。这样可以在不破坏原有代码设计情况下,灵活应对需求变化

2、应用:

比如,在做文件上传下载功能时,抽象出一个文件上传下载的接口,然后创建一个阿里云文件存储类去实现。当有其他私有云存储进来时,也可以基于这个接口实现。

3、方法:

在软件开发时,要有抽象和接口意识

接口定义命名要通用,不能包含跟具体实现相关的字眼

与特定实现有关的方法不要定义在接口中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值