飘~涅咯~switch的缺点是虾米涅虾米叫多态呢,为虾米能有效替代switch涅(((m(-_-)m[解决办法]翻译一下:标题:
飘~涅咯~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 的设计模式是
齐名的。 这本书的开头一章就一个小型的重构案例,如何能理解看懂的话,对每个人都是有帮助的。这个案例中也有 如何去掉 switch 采用多态进行重构的要点。[解决办法]
探讨 顺便问下咯· “该用户很懒,米有设置昵称” 昵称咋米设置额?[解决办法] switch的用途有限,只能涉及常量(包括ENUM)如果非要与多态扯上关系的话
就是火龙大哥说的那样了~继续学习~
[解决办法] 灰煮流MM的帖子很火啊~~
[解决办法] 回答经 7 楼翻译后的楼主的虾米问题:
利用工厂方法(or 抽象工厂)模式可以消除 switch case 的判断。
<引用>
有了翅膀才能飞,欠缺灵活的代码就象冻坏了翅膀的鸟儿。不能飞翔,就少了几许灵动的气韵。我们需要给代码带去温暖的阳光,让僵冷的翅膀重新飞起来。……
http://www.cnblogs.com/wayfarer/articles/70453.html
</引用>
[解决办法] [color=#FF0000][/color]楼主真搞笑啊!
我就简单的给你模拟一下什么是多态吧!
假设你现在有一个实体类接口是Animal,那么你可能会去实现这个类叫Dog.java.这个类里,你实现了所有animal的所有方法.
这样,你在使用的时候,就是这样了:
Animail aim = new Dog();这个时候,你的需求有变动,你要有一个猫猫,那么你怎么办?好办啊!你就写一个implement animal的Cat类,然后,你使用的时候,就变成了:
Animail aim = new Cat();
这就是多态的最简单的实现过程了.是不是感觉开发简单了许多?至少你保证了一些类是不用变化的.最后,请记住几句话:
多态分为两种: 编译时多态和运行时多态。
编译时类型:主观概念,把它看作什么。
运行时类型:客观概念,实际它是什么。
例:Animal a=new Dog();
指着狗问,这个动物是什么?