代码小变化带来的大不同

简介: 代码小变化带来的大不同

今天上了一节设计模式的课,讨论的问题看似很简单,但是背后蕴含的思想却是巨大的。不多说废话,直接上代码。

代码一:

    public static void main(String[] args) {
        System.out.println(5+6);
    }

代码二:

  public static void main(String[]args){
    int a = 5;
    int b = 6;
    System.out.println(a+b);
  }

看到这两个代码,可能很多人都不屑一顾。(嗨,不就是增加了两个变量吗,有什么啊,结果还不是输出个11而已吗。)或者一头雾水(这是什么啊?那儿有变化啊?这点变化有什么用啊?)。

最开始我也很不理解,不知道这一点细微的变化到底有什么作用,后来在老师的引导下,我才逐渐的品味到他的味道。


变化:

从版本2到版本一实现了从有限到无限的扩展,从两个确定数相加到两个任意数相加,实现了从有限2个数相加,到无限个数相加。同时通过a+B实现了对算法的封装,从而实现了在这里面具体的加法复用


看完上面这段话,不知道你有什么感想。

有限到无限,增加了两个变量,怎么就有限到无限了,这不还是5+6吗?虽然看起来是这样,但是仔细琢磨你会发现,有了这两个变量、5和6、可以换成7、8、9、10 …,你可以换成任意的数字,这就是有限到无限。

对算法的封装,为什么是对算法的封装呢?难道封装的不是加法吗?从代码来看,似乎还是加法,但是如果我们用抽象的观点来看,加法是算法的一种,算法是对加法的抽象,这里是加法,别处可以是减法、乘法、除法、各种算法。

加法的复用,这句话就是落到我们写的这个具体的代码上,复用的是加法。


目录
相关文章
|
安全 前端开发 Java
基于springboot的微信公众号管理系统(支持多公众号接入)
基于springboot的微信公众号管理系统(支持多公众号接入)
510 2
|
Web App开发 资源调度 JavaScript
去中心化的前端构建工具 — Vite
Vite旨在通过利用生态系统中的新进展来解决这些问题:浏览器中本地ES模块的可用性,以及用编译到本地语言编写的JavaScript工具的兴起。通过本教程中,你将从头开始构建自己的应用,分别使用 Vite-Cli 和 云开发平台
1310 0
去中心化的前端构建工具 — Vite
|
机器学习/深度学习 自然语言处理 数据处理
什么是数据标注
什么是数据标注
4553 0
|
Web App开发 索引
流媒体服务器SRS部署
github地址:https://github.com/ossrs/srs 1,srs下载 http://ossrs.net/srs.release/releases/index.html 选择正式发形版 2,安装 # unzip SRS-CentOS6-x86_64-1.
4725 0
|
3月前
|
JavaScript 前端开发 Java
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
462 72
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
|
3月前
|
安全 Windows
应用程序无法正常启动0xc0000428如何处理解决?
遇到应用程序无法正常启动并提示错误代码0xc0000428时,通常是由于系统无法验证文件的数字签名或启动文件损坏导致。以下是几种有效的解决方法
|
负载均衡 应用服务中间件 nginx
搭建域名访问环境二(负载均衡到网关)
这篇文章讲述了如何配置Nginx实现域名访问环境,通过负载均衡将请求从Nginx反向代理到服务网关,并提供了详细的配置步骤和测试验证方法。
搭建域名访问环境二(负载均衡到网关)
python 随机划分图片数据集以及移动标注
这篇文章提供了一个Python脚本,用于随机划分图片数据集为训练集和测试集,并将对应的标注文件移动到相应的子文件夹中,以减少训练使用的数据量。
EDM营销平台有哪些?Top5平台分析
探索五大热门EDM营销平台:蜂邮EDM以其丰富功能备受喜爱;Constant Contact以用户友好体验著称;Sendinblue结合短信营销与广告管理,适合中小企业;GetResponse提供营销自动化解决方案,适合各类企业;AokSend以其历史底蕴和分析工具吸引用户。各平台特色各异,企业可根据需求选择。