当前位置: 代码迷 >> J2SE >> 飘~涅咯~switch的缺点是虾米涅解决办法
  详细解决方案

飘~涅咯~switch的缺点是虾米涅解决办法

热度:327   发布时间:2016-04-24 12:49:11.0
飘~涅咯~switch的缺点是虾米涅
虾米叫多态呢,为虾米能有效替代switch涅

(((m(-_-)m

------解决方案--------------------
翻译一下:

标题:switch 有什么缺点?

正文:什么叫多态?为什么说多态能取代 switch?
------解决方案--------------------

多态就是一个对象 多种形态 方便灵活使用父子类对象,方法~
switch是指的switch case语句么?
爽歪歪星球语我只是一知半解
------解决方案--------------------
多态的定义和特性可以在百度搜到

在多态出现之前,需要使用一个额外的变量来决定调用哪个程序,这时候需要用到switch语句对额外的变量进行判断。
例子就不举了,写起来太恶心了……
------解决方案--------------------
switch缺点就是容易发生case穿透问题!


对于复杂的流程分支不易用switch
------解决方案--------------------
通常情况下我们可以把多态理解成一个对象多个状态,即重写和重载。还有一个表现就是创建一个标准,即用接口来实现。
多态是为了增加程序的可维护性,可扩展性,还有提高代码的重用性。来设计的。
而你说的switch是程序的语法。
------解决方案--------------------
我来看看写程序的非主流MM
------解决方案--------------------
探讨
我来看看写程序的非主流MM

------解决方案--------------------
Mark
------解决方案--------------------
LZ说话很搞笑,很欠扁~
------解决方案--------------------
哈哈 我来学中文的
------解决方案--------------------
探讨
学中文哒请排队。

不是方言,是某某某星球语^^

------解决方案--------------------
我来看看火星人
------解决方案--------------------
我来膜拜火星文...
------解决方案--------------------
探讨
我来膜拜火星文...

------解决方案--------------------
这样的人才 搞java 有点可惜哦 不过 是楼主搞java还是被java搞就拭目以待了 嘿嘿
------解决方案--------------------
应该想问为什么不用这种方式实现多态吧:

Type type = object.getRunTimeType();
switch(type)
{
case Root:
((Root)object).method();
case OffSpring1:
((OffSpring1)object).method();
case OffSpring2:
((OffSpring2)object).method();
...
}
------解决方案--------------------
什么叫多态?为什么说多态能取代 switch? 谁告诉你的?!该打
------解决方案--------------------
引用楼主 Cincat 的帖子:
虾米叫多态呢,为虾米能有效替代switch涅

(((m(-_-)m

------解决方案--------------------
欢迎来地球
------解决方案--------------------
楼主也知道 switch 多了很麻烦的,而且对扩展很不方便,但是为什么说多态能有效地替换 switch 呢?
这个问题我感觉很难说清楚。

如果一个应用做好了之后,理想化的情况下是永远不会改动了,那么,所有的设计方法、重构方法、各种
设计模式能将成为文物,没有丝毫用处了。但是现实并非如此,我们做好的东西可能会一动再动。如果没
有好的设计的话,将会导致这些代码很难进行维护,可能改一个小小的东西,会导致一堆的代码进行更改,
这也许就不是我们所希望的。

按照面向对象设计原则中的“开-闭原则”,某一个应用在完成之后除非是修正原有代码中的错误,在其他
情况下(比如说增加一个新的功能),只允许添加新的代码,但是原来已经完成的代码一行都不能进行改动。
这就是所谓的“开-闭原则”,即对功能的增加是开放的,对既有代码的修改是封闭的。

在这种原则下,如果采用 switch 的话,增加一个 case 项势必要去更改原有的代码,如果采用多态的话,
我们只需要在配置文件中多加上一条新增的子类名称,系统就会自动地进行识别,我们原来写好的代码可以
不要去动。

上面说的一些只是理想上的东西,现实中是很难有理想上的东西,而且这种实现需要有很多的面向对象技巧
和代码经验,有一本书对如何编写可扩展、易维护的代码有相当深入的介绍,这本书与 GoF 的设计模式是
  相关解决方案