为什么阿里巴巴建议开发者谨慎使用继承?

简介: 对于很多开发者来说,继承肯定都是不陌生的。但是,继承一定适合所有的场景吗?毫无忌讳的使用继承来做代码扩展真的好吗?

作者 | Hollis

从学习Java的第一天起,我们就知道Java是一种面向对象语言,而学习Java的第二天,我们就知道了面向对象的三大基本特性是:封装、继承、多态。

所以,对于很多开发者来说,继承肯定都是不陌生的。但是,继承一定适合所有的场景吗?毫无忌讳的使用继承来做代码扩展真的好吗?

为什么《阿里巴巴Java开发手册》中有一条规定:谨慎使用继承的方式进行扩展,优先使用组合的方式实现。

image.png

本文就来针对这些问题,简单分析一下。

面向对象的复用技术

每个人在刚刚学习继承的时候都会或多或少的有这样一个印象:继承可以帮助我实现类的复用。所以,很多开发人员在需要复用一些代码的时候会很自然的使用类的继承的方式,因为书上就是这么写的(老师就是这么教的)。但是,其实这样做是不对的。长期大量的使用继承会给代码带来很高的维护成本。

前面提到复用,这里就简单介绍一下面向对象的复用技术。

复用性是面向对象技术带来的很棒的潜在好处之一。如果运用的好的话可以帮助我们节省很多开发时间,提升开发效率。但是,如果被滥用那么就可能产生很多难以维护的代码。

作为一门面向对象开发的语言,代码复用是Java引人注意的功能之一。Java代码的复用有继承,组合以及代理三种具体的表现形式。

来源 | HollisChuang's Blog

相关文章
|
Kubernetes 负载均衡 应用服务中间件
【K8S系列】第十三讲:Ingress详解
【K8S系列】第十三讲:Ingress详解
8782 0
|
SQL 缓存 Oracle
为什么阿里巴巴禁止使用 count(列名)或 count(常量)来替代 count(*)
本文介绍了COUNT函数的用法,主要用于统计表行数。主要用法有COUNT(*)、COUNT(字段)和COUNT(1)。
12686 0
为什么阿里巴巴禁止使用 count(列名)或 count(常量)来替代 count(*)
|
5月前
|
人工智能 监控 Kubernetes
稳定支撑大规模模型调用,携程旅游的 AI 网关实践
为了进一步提升服务水平和服务质量,携程很早就开始在人工智能大模型领域进行探索。而随着工作的深入,大模型服务的应用领域不断扩大,公司内部需要访问大模型服务的应用也越来越多,不可避免的就遇到了几个问题,我们自然就会想到使用网关来对这些服务接入进行统一管理,并增加各种切面上的流量治理功能。
511 61
|
9月前
|
缓存 前端开发 Java
在 React 中,组合组件和高阶组件在性能方面有何区别?
在 React 中,组合组件和高阶组件在性能方面有何区别?
300 67
|
存储 JSON 前端开发
JSON与现代Web开发:数据交互的最佳选择
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
962 1
|
API UED
逆向海淘代购集运系统方案:lete淘宝代购集运系统丨1688代采系统
**淘宝代购集运系统**整合多平台商品资源,提供代购、仓储、国际运输一站式服务。通过API接口实现商品实时同步,支持多种支付方式与国际物流,确保用户跨地域便利购物。系统涵盖订单管理、多语言支持、客服及营销功能,通过技术创新提升用户体验和满意度。关键点包括市场定位、支付物流体系构建、用户体验优化和API集成,助力海外用户轻松购买中国商品。
|
缓存 安全 Java
你真的会使用SimpleDateFormat吗?
在日常开发中,我们经常会用到时间,我们有很多办法在Java代码中获取时间。但是不同的方法获取到的时间的格式都不尽相同,这时候就需要一种格式化工具,把时间显示成我们需要的格式。
你真的会使用SimpleDateFormat吗?
|
关系型数据库 MySQL 数据库
[图解MySQL]MySQL组提交(group commit)
[图解MySQL]MySQL组提交(group commit)
18631 0
|
Java Apache Maven
为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?
我们到底应该选择哪种属性拷贝类工具更加合适呢?为什么阿里巴巴Java开发手册中提到禁止使用Apache BeanUtils呢?
12804 0
为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?
|
SQL Java 程序员
全新出击!《Java开发手册(嵩山版)》解读手册升级下载
《〈Java开发手册(嵩山版)〉灵魂15问》重磅来袭!“一线大厂如何用Java”解读再升级,千万阅读量博主深究Java规约背后的原理。规范学好Java还不来看一看?
75329 0
全新出击!《Java开发手册(嵩山版)》解读手册升级下载