![]() |
2
6
example . 或者这是另一个 example
让我补充一点,这并非在所有情况下都是一个完美的解决方案。正如(对不起,我忘了你的名字)在我的评论中所指出的,有时这可能是一件痛苦的事情,尤其是如果你必须创建一个对象模型来完成这项工作。如果您具备以下条件,则此重构将非常出色:
在这里,您可以将开关重构为每个水果都可以处理的新方法。 编辑
这种方法的优点是易于编写,而且通常是我使用的第一种方法。虽然仍然有一个switch语句,但它被隔离到一个代码区域,并且非常基本,它返回的是一个n对象。如果你只有两个物体,它们;We’我们不会改变,这很有效。 您可以研究的其他更复杂的模式是 Abstract Factory . 如果您的平台支持,您还可以动态创建水果。您也可以使用类似 Provider Pattern |
![]() |
3
3
事实上,我在2008年4月的博客中写到了如何解决这个问题。看一看 here 让我知道你的想法。 我建议你:
如果你想看到一些关于如何转换代码的实际代码示例,请访问我的博客。 顺便说一句,这不是一次廉价的自我推销尝试;我已经是一个很长时间的用户了,这是我第一次链接到我的博客——我这么做只是因为我认为这是相关的。 |
![]() |
4
2
The Clean Code Talks -- Inheritance, Polymorphism, & Testing “视频?它讨论了使用面向对象技术删除if/switch条件的方法。 |
![]() |
5
1
Strategy Pattern ,其中,不是放置带有链接条件的长ifs链,而是将每个条件抽象为不同的对象,每个对象定义其特定行为。 定义这些对象的类将实现一个由父对象调用的接口。 |
![]() |
6
1
你不说你使用的是什么语言,但是如果你使用的是一种面向对象语言,比如C++、C语言或java,你就可以经常使用。
虚拟函数
解决与您当前正在使用解决的问题相同的问题
具有
优点是您可以添加新的
|
![]() |
7
0
怎么样:
|
![]() |
cng · 如何在嵌套数组中查找值,然后将值从布尔值更改为字符串? 2 年前 |
![]() |
Tanu · 使用三元运算符时获得Lint无嵌套三元错误 2 年前 |
![]() |
SpaceBallz · 比较嵌套列表中的值 2 年前 |
![]() |
Orsi · 选择嵌套列表的最大值和最小值。网 2 年前 |
![]() |
Hendrik · 在尝试将数组分解为新变量以进行赋值时遇到问题 2 年前 |
![]() |
SOS · 初学者对有关嵌套对象函数的JavaScript语法感到困惑 2 年前 |
![]() |
Teodor Kostovski · OCaml中的嵌套函数及其参数 2 年前 |
![]() |
lingyau lee · 递归-对嵌套列表求和 2 年前 |