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

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

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

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

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

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

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

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

相关·内容

我的职业是前端工程师二:入门不是应该很简单吗?

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

93560

兄dei,你代码需要优化了

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

30730
  • 分享 7 个优化代码的技巧

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

    42410

    写出优质Java代码的4个技巧

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

    1.8K00

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

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

    80910

    写出优质Java代码的4个技巧

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

    84970

    写出优质Java代码的4个技巧

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

    40810

    写出优质Java代码的4个技巧

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

    54110

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

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

    61120

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

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

    27610

    “干净”的代码,贼差的性能

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

    57210

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

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

    43000

    Java基础60问

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

    56010

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

    一种臭名昭著的坏味是,在客户代码中使用条件语句(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

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

    一种臭名昭著的坏味是,在客户代码中使用条件语句(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 {

    29620

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

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

    37110

    经典笔试题-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+汉的半个”。

    76220

    程序中减少使用if语句的方法集锦

    大约十年前,我听说了反if的活动,觉得这个概念非常荒谬。如果不用if语句,又怎么能写出有用的程序呢?这简直太荒谬了。 但之后你会开始思考:是否还记得上周你拼命想读懂的深度嵌套代码?糟透了对么?...我曾经看到过一些非常糟糕的代码,只是为了消除所有的if语句而刻意避开if语句。我们想要绕开这个误区, 下面我给出的每种模式,都会给出使用范围。 单独的if语句如果不复制到其他地方,也许是不错的句子。...但在自己的代码库中,由于有可靠的gatekeeper把关,我觉得这是个很好的机会,我们可以尝试使用简单、更为丰富与强大的替代方案来实现。...模式2:使用多态(Polymorphism) 背景: 根据类型switch时。 ?...解决方案: 使用多态,添加新类型时大家都不会忘记添加相关行为。 注意:上例为了简洁只写了一个方法,但在有多个switch时更有用。 ? ?

    1.3K20
    领券