首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该对简单的switch语句使用多态吗?

对于简单的switch语句,使用多态是不必要的。多态是面向对象编程的概念,它允许不同的对象对同一个消息作出不同的响应。在使用多态时,我们需要定义一个基类或接口,并在派生类中实现不同的行为。然后,通过基类或接口的引用来调用不同派生类的方法。

然而,switch语句是一种条件语句,用于根据不同的条件执行不同的代码块。它适用于简单的条件判断,但当条件较多或复杂时,使用多态可以提高代码的可读性和可维护性。

在使用switch语句时,我们可以考虑以下几点:

  1. 如果条件较少且简单,使用switch语句是合理的选择,不需要引入多态的复杂性。
  2. 如果条件较多或复杂,可以考虑使用多态来替代switch语句,以提高代码的可扩展性和可维护性。
  3. 如果已经存在一个基类或接口,并且有多个派生类需要根据条件执行不同的行为,那么使用多态是一个更好的选择。

总结来说,对于简单的switch语句,使用多态是不必要的。但在复杂的条件判断场景下,使用多态可以提高代码的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

职业是前端工程师二:入门不是应该简单

入门前端,是一件很难?在今天,也没有想好一个答案,也不知道怎样给出一个答案。这个问题并不取决于前端,而是取决于不同人需求。...前端入门 在刚学前端工程师时候,由于只需要编写 CSS、JavaScript 和 HTML,因此要做前端活相当简单。有时,甚至会觉得有些乏味。...曾经有一段时间里,使用 Aptana——它可以将 minify 后代码格式化。 现在,使用 Intellij IDEA 和 WebStorm作为主要开发工具,它们重构功能让难以自拔。...当我需要修改一些简单文本时,就会使用 Vim 或者 Sublime text。在命令行里发现了一个问题,直接可用命令行来打开并修改。 ?...今天,也仍然在使用 Chrome 作为日常和开发用浏览器。

91860

兄dei,你代码需要优化了

所以啊,我们要编写出优雅代码,方便你我他,岂不美哉? 下面分享一些在开发中常用编码中小建议,如有不妥,欢迎大家一起交流学习。 卫语句语句,就是把复杂条件表达式拆分成多个条件表达式。...肯定有小伙伴跳出来说,map 和 bean 不是一样?用map还可以省去思考如何命名Class呢。但是从代码规范来说,这样代码设计不是更符合 Java 面向对象思想?...我们常常在编写 switch 语句时候,如果改用多态,可以把每个分支,抽取到一个子类内覆写函数中,这就更加灵活。...对比起单纯switch,我们可以这样理解: 虽然在类上有所增加,但是通过多态,把对应操作逻辑分离出来,使得代码耦合度降低。...需要注意是,不是所有switch语句都需要这样替换, 在面对简单 switch语句,就不必要了, 避免过度设计嫌疑。

30330
  • 分享 7 个优化代码技巧

    所以啊,我们要编写出优雅代码,方便你我他,岂不美哉? 下面分享一些在开发中常用编码中小建议,如有不妥,欢迎大家一起交流学习。 卫语句语句,就是把复杂条件表达式拆分成多个条件表达式。...肯定有小伙伴跳出来说,map 和 bean 不是一样?用map 还可以省去思考如何命名Class呢。但是从代码规范来说,这样代码设计不是更符合 Java 面向对象思想?...我们常常在编写 switch 语句时候,如果改用多态,可以把每个分支,抽取到一个子类内覆写函数中,这就更加灵活。...对比起单纯switch,我们可以这样理解: 虽然在类上有所增加,但是通过多态,把对应操作逻辑分离出来,使得代码耦合度降低。...需要注意是,不是所有switch语句都需要这样替换, 在面对简单 switch语句,就不必要了, 避免过度设计嫌疑。

    42110

    写出优质Java代码4个技巧

    虽然我们希望能够写出最高效代码,但很多时候,如果想代码进行优化,我们却无从下手。例如,下面的这段代码会影响到性能?...在条件设计中,我们必须复制现有的switch语句并将其添加到我们新方法中。此外,我们还必须在每个case语句中添加每个帐户类型逻辑。...在条件设计中,没有这样检查,以确保每个类型都有一个case语句。如果添加了新类型,我们可以简单地忘记更新每个switch语句。这个问题越严重,我们就越重复我们switch语句。...,因此已经发布了将条件语句重构为多态方法。...在测试驱动设计中:例如,Kent Beck设计了一个简单货币系统,目的是使用多态类,但发现这使设计过于复杂,于是便将他设计重新设计成一个非多态风格。

    1.8K00

    业务代码如何才能不再写出大串ifelse?

    嵌套代码 CR 如下分发刚写完一篇博客案例: 逻辑很简单,但有多层缩进,for 循环一层,里面有俩 if ,又多加两层。若逻辑再复杂点,缩进岂不是像啤酒肚一般越来越大?...这样代码可使用语句(guard clause),即设置单独检查条件,不满足该检查条件时,方法立刻返回。...else 可以不写? 可以! 根据文章信息进行收费: 不用 else,简单方式就是让每个逻辑提前返回,类似卫语句: 业务简单代码,这重构还很轻松,但对复杂代码,就得上多态了。...嵌套、else 语句,都是坏味道,本质上都在追求简单,因为一段代码分支过多,其复杂度就会大幅度增加。...引入 UserLevel 模型,消除 switch: 前面代码即可去掉 switchswitch 其实就是一堆“ if…else” 简化写法,二者等价,所以,这个重构手法,以多态取代是条件表达式

    80210

    写出优质Java代码4个技巧

    虽然我们希望能够写出最高效代码,但很多时候,如果想代码进行优化,我们却无从下手。例如,下面的这段代码会影响到性能? ? 这就得视情况而定了。...在条件设计中,我们必须复制现有的switch语句并将其添加到我们新方法中。此外,我们还必须在每个case语句中添加每个帐户类型逻辑。...在条件设计中,没有这样检查,以确保每个类型都有一个case语句。如果添加了新类型,我们可以简单地忘记更新每个switch语句。这个问题越严重,我们就越重复我们switch语句。...在测试驱动设计中:例如,Kent Beck设计了一个简单货币系统,目的是使用多态类,但发现这使设计过于复杂,于是便将他设计重新设计成一个非多态风格。...经验和合理判断将决定何时是将条件代码转换为多态代码合适时间。 结束语 作为程序员,尽管平常所使用常规技术可以解决大部分问题,但有时我们应该打破这种常规,主动需求一些创新。

    83870

    写出优质Java代码4个技巧

    虽然我们希望能够写出最高效代码,但很多时候,如果想代码进行优化,我们却无从下手。例如,下面的这段代码会影响到性能?...在条件设计中,我们必须复制现有的switch语句并将其添加到我们新方法中。此外,我们还必须在每个case语句中添加每个帐户类型逻辑。...在条件设计中,没有这样检查,以确保每个类型都有一个case语句。如果添加了新类型,我们可以简单地忘记更新每个switch语句。这个问题越严重,我们就越重复我们switch语句。...,因此已经发布了将条件语句重构为多态方法。...在测试驱动设计中:例如,Kent Beck设计了一个简单货币系统,目的是使用多态类,但发现这使设计过于复杂,于是便将他设计重新设计成一个非多态风格。

    53810

    写出优质Java代码4个技巧

    虽然我们希望能够写出最高效代码,但很多时候,如果想代码进行优化,我们却无从下手。例如,下面的这段代码会影响到性能?...在条件设计中,我们必须复制现有的switch语句并将其添加到我们新方法中。此外,我们还必须在每个case语句中添加每个帐户类型逻辑。...在条件设计中,没有这样检查,以确保每个类型都有一个case语句。如果添加了新类型,我们可以简单地忘记更新每个switch语句。这个问题越严重,我们就越重复我们switch语句。...,因此已经发布了将条件语句重构为多态方法。...在测试驱动设计中:例如,Kent Beck设计了一个简单货币系统,目的是使用多态类,但发现这使设计过于复杂,于是便将他设计重新设计成一个非多态风格。

    40710

    公司应该使用AI?英伟达, DeepMind 等10家AI机构试图用这份报告为你解答

    大数据文摘作品 作者:魏子敏、龙牧雪 “公司应该使用AI?”...近日,来自DeepMind、谷歌大脑、OpenAI、英伟达等10家科技企业顶级大脑试图帮你回答这个问题,并发布了白皮书《你企业应该使用人工智能?》。...本次报告AI在商业中应用进行了探讨,旨在探索AI在商业中应用情况。并给出了一些未来几年商业预测。 包括: 到2018年,20%商业内容将来自AI。...Ankur Handa, OpenAI: 认为AI医疗、公共服务和政府等关键决策将带来积极影响。...使用AI也更会容易——每个人都将能用AI创造和创新。 以下为报告全文,关注大数据文摘,进入公众号后台回复“商业” 即可下载PDF版报告。

    61020

    《重构》第九章 - 读后感(简化条件表达式)

    很明显这里讲应该表达是if语句问题。那么if语句在我们编程过程中肯定是用不规范,或者说有违背我们开头所说自己管好自己基本原则。根据本章标题,那么这章就是要让我们写条件逻辑更加简单。...这块意思大概就是说代码中判断语句很多,但是其结果都是一样,对于这种情况就应该使用逻辑与或者或将其合并为一个条件表达式。书中条件表达式合并原因也进行了说明。...同时书中也条件反转做了介绍,就是使用相反条件来简化现在情况,为啥怎么做原因就是正面有多复杂,那么背面就有多简单。...在前边文章中我们多次说到了多态,其实在重构这本书中是提倡使用多态多态就是为了解决不同情况操作,因此其天然具有判断标志。也就是使用多态你根本都不需要写判断或者switch语句。...而且使用if或者switch就会有其他对象依赖,那么这样是不好,违背了基本原则。 书中依然采用职位和薪资示例: 7.引入null对象 what?

    27010

    “干净”代码,贼差性能

    “干净代码”性能测试 下面来看几条有代表性“干净”建议: • 相较于“if/else”和“switch”,尽量用多态; • 不要告诉代码它所处理对象内部; • 函数应该小一点;函数应该只做一件事...也就是说,如果严格按照“干净”编程原则处理,那我们要用掉 35 个计算周期。 可如果不管第一条规矩,结果会怎样?这里我们不使用多态,直接上 switch 语句。...总而言之,现在想强调最重要一点——我们可以通过观察模式,来大大简化这条 switch 语句。 请记住:这个示例不是。这是“干净”代码自己选说明示例。...在 switch 语句那边,变更也基本相同。...唯一区别,就是调用虚拟函数还是使用 switch 语句。 再来看表驱动示例,这种把计算操作跟数据结合起来办法真的棒。而且这个版本需要修改只有表里值。

    56210

    Java基础60问

    Q24:if语句switch语句区别是什么? 答:if语句一般用于做范围判断, switch语句一般用来做区间判断. Q25:switch.case语句表达式可以放什么?...Q26:switch语句break可以省略不写? 答:最后一个break可以省略, 结果没有任何影响, 中间break省略的话, 可能会发生case穿透现象....答:break是用来终止循环, 循环不再继续执行, 而且它还可以应用到switch语句中. continue是用来结束本次循环, 进行下一次循环, 循环还会继续执行....答:封装就是隐藏对象属性和实现细节, 仅对外提供公共访问方式. Q37:封装指就是private, 这句话?...Q56:多态好处和弊端分别是什么? 答: 好处: 提高了代码可扩展性, 维护性. 弊端: 父类(父接口)引用不能直接使用子类特有成员. Q57:多态成员访问特点是什么?

    55510

    【封装那些事】 未利用封装

    一种臭名昭著坏味是,在客户代码中使用条件语句(if-else或switch语句)来显式地检查类型,并根据类型执行相应操作。...相反,如果利用了运行时多态,完全可以避免这种问题。 未利用封装潜在原因 以过程型思维使用面向对象语言 开发时思维是以代码执行过程为导向,自然而然就会使用if-else语句switch语句。...可能需要在客户代码或一个工厂类中使用switch-case语句,而只需要使用一次这个switch-case语句。...这让想起,在看完《重构》后天真幼稚想消除项目中switch-case语句,只要项目中存在switch-case语句就觉得存在坏味道,此后一段时间很痛苦,因为项目中总是存在消灭不了switch-case...但是这样判断应该只有一处,负责日后代码维护是个灾难。 示例分析二 还是那句话switch-case语句和if-else语句不可怕,可怕是多个witch-case语句和if-else语句

    1.3K40

    《代码整洁之道》笔记(1-3章节)

    避免思维映射 避免使用自己想到,但不是通用,或者是只有自己能看懂命名。 专业程序员善用其能,编写其他人能理解代码。 类名 应该是名词,不应包含动词。毕竟我们是面向对象编程。...多个局部变量一起创建,一起使用,或者属于一个抽象层面,就可以抽取。 多个条件分支时,分支可抽取为方法。如果干是一件事,可以考虑用多态+工厂类。 不要添加没用语境 只要能表达清楚,越短越好。...自顶向下读代码:向下规则 下一步骤在函数尾,这样就一层一层往里深入,往下执行。 switch语句 写出只做一件事switch语句难,因为switch语句天生就是做多件事。...条件分支抽取,或者将分支细节隐藏到子类中,利用工厂模式+多态解决。 使用具有描述性名称 函数越短小,功能越集中,就越便于起个好名字。 别害怕长名称。...单参数函数普遍形式 不建议通过参数输出信息,应该使用返回值形式。 标识参数 标识参数丑陋不堪,向函数传入布尔值简直就是骇人听闻做法。 相当于大声地宣布本函数不只做一件事。

    41800

    【封装那些事】 未利用封装

    一种臭名昭著坏味是,在客户代码中使用条件语句(if-else或switch语句)来显式地检查类型,并根据类型执行相应操作。...未利用封装潜在原因 ###以过程型思维使用面向对象语言 开发时思维是以代码执行过程为导向,自然而然就会使用if-else语句switch语句。...可能需要在客户代码或一个工厂类中使用switch-case语句,而只需要使用一次这个switch-case语句。...这让想起,在看完《重构》后天真幼稚想消除项目中switch-case语句,只要项目中存在switch-case语句就觉得存在坏味道,此后一段时间很痛苦,因为项目中总是存在消灭不了switch-case...但是这样判断应该只有一处,负责日后代码维护是个灾难。 示例分析二 还是那句话switch-case语句和if-else语句不可怕,可怕是多个witch-case语句和if-else语句

    1.1K90

    22.Go面向对象-接口

    ,以及使用接口实现多态,大家都比较熟悉了,但是多态有什么好处呢?...使用面向对象思想实现一个加减功能计算器,可能有同学感觉非常简单,代码如下: type Operation struct { } func (p *Operation) GetResult(numA...这不是我们前面在讲解面向对象概念时说到,找个对象来干活?不需要自己去实现该功能。 2.大家仔细观察上面的代码,有什么问题? 现在让你在改计算器中,再增加一个功能,例如乘法,应该怎么办呢?...你可能会说很简单啊,直接在GetResult()方法switch中添加一个case分支就可以了。 问题是:在这个过程中,如果你不小心将加法修改成了减法怎么办?...} } (6):Order()改造 func (c *CarStore) Order(money float64, carType string) { switch carType {

    29120

    一文回顾 Java 入门知识(中)

    首先是最最基础 Java 编码写法规则和结构,比如导图里:运算符、流程控制语句、循环、数组和方法这些内容;而后面的面向对象、以及面向对象三大特点:封装、继承和多态则是偏向思维层面的内容,这就不单要求你掌握...执行说明与应用场景: if条件:单 if 语句或多个单 if 语句连续判断 这种情况都有,程序在处理某个条件是否满足一个或多个条件 if-else:单独使用或复杂条件嵌套使用场景,处理某种业务多重判断中某个具体条件是否满足...switch-case:从程序执行结构上来看和多个单 if 特别像,单switch-case判断条件类型要比if语句多,if条件接收是逻辑真假,而switch-case还可将基本数据类型和String...方法 这块主要明白如何编写以及编写规则,方法之间调用和返回值,简单来讲,你会写各种方法即可,后面学了继承和多态,你就会对方法有更深入了解。 实际开发中,代码都是通过方法来完成。...理解清楚后,我们才能创建出合适类。 要掌握内容: 面向对象思想 创建类 类构成 类构造方法和初始化顺序 特点:封装、继承、多态 封装 简单理解就是: 类存放在哪个位置?

    37010

    代码越“整洁”,性能越“拉胯”?

    整理和归纳“整洁”代码规则,并提取实际影响代码结构规则,我们将得到: 使用多态代替“if/else”和“switch”; 代码不应该知道使用对象内部结构; 严格控制函数规模; 函数应该只做一件事...如果我们不使用多态性,使用一个 switch 语句呢?...过去三四年间硬件发展瞬间化无,仅仅是因为有人说要使用多态性,不要使用 switch 语句。 然而,这只是一个开头。 违反“代码整洁之道”更多条规则后 如果我们违反更多规则,结果会怎么样?...为了保证“整洁”代码采取疑罪从无原则,明确保留了这些代码。 switch 语句版本也需要相同修改。...更糟糕是,你无法使用此类代码处理复杂逻辑。如上所述,如果你代码库围绕函数而建,那么一些简单功能(例如将值提取到表中和删除 switch 语句)很容易实现。

    30530

    经典笔试题-Java基础篇

    4)多态性:多态性是指允许不同类对象同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享优势,很好解决了应用程序函数同名问题。...【基础】 答:switch(expr1)中,expr1 是一个整数表达式。因此传递给switch 和case语句参数应该是int、short、char 或者byte。...31、java 中会存在内存泄漏,请简单描述。【基础】 答:会;存在无用但可达对象,这些对象不能被GC 回收,导致耗费内存资源。...45、内部类可以引用他包含类成员?有没有什么限制?【基础】 答:一个内部类对象可以访问创建它外部类对象内容。 46、java 中实现多态机制是什么?...,要求字符串中中文不能出现乱码:如(“ABC”,4)应该截为“AB”,输入(“ABC 汉DEF”,6)应该输出为“ABC”而不是“ABC+汉半个”。

    74720
    领券