【问题标题】:Get correct child class instance no switch case获得正确的子类实​​例没有开关盒
【发布时间】:2016-03-31 07:05:26
【问题描述】:

我正在尝试制作一个小型计算器应用程序并学习 OOPS 概念。我看了this talk。 它展示了如何使用多态性来避免 switch 语句。

我的应用中有 4 个操作员按钮(+-/*)。我正在为运算符和操作数使用 2 个堆栈 当用户点击任何按钮操作数或运算符时,我尝试为当前表达式创建一个中缀树并将运算符保留在运算符堆栈中。 当用户点击“计算”时,我会遍历运算符堆栈并根据运算符优先级调整中缀树。

我有抽象 Node 类,ValueNode -> Node,抽象 operatorNode,AddNode -> operatorNode,SubtractNode -> OperatorNode 等等。

我的代码灵感来自以下链接,以防上述描述不清楚。 http://cplusplus.kurttest.com/notes/stack.html#binary-expression-tree

我的问题是,如何在不使用 switch 的情况下根据堆栈中的运算符 char 创建正确的子类对象?

所以,给定字符(+-*/)我如何在不使用开关的情况下创建 AddNodeSubtractNode

【问题讨论】:

  • 不要描述你的代码,而是发布它。它会更容易理解和帮助你。

标签: java oop optimization switch-statement polymorphism


【解决方案1】:

您可以创建从操作员到创建正确实例的工厂的映射。这样你:
1. 避免开关
2.避免在添加新操作数时更新树创建,只需将它们注册到映射中

地图中没有的任何东西都可以假定为操作数(常量或变量)

【讨论】:

  • 感谢我的朋友。
猜你喜欢
  • 2021-12-28
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
相关资源
最近更新 更多