Java 获取正确的子类实例无开关情况
我正在尝试制作一个小型计算器应用程序并学习OOPS概念。我看着。 它展示了如何使用多态性来避免switch语句 我的应用程序中有4个操作员按钮(Java 获取正确的子类实例无开关情况,java,oop,optimization,switch-statement,polymorphism,Java,Oop,Optimization,Switch Statement,Polymorphism,我正在尝试制作一个小型计算器应用程序并学习OOPS概念。我看着。 它展示了如何使用多态性来避免switch语句 我的应用程序中有4个操作员按钮(+,-,/,*)。我对运算符和操作数使用两个堆栈 当用户点击任何按钮操作数或运算符时,我尝试为当前表达式创建中缀树,并将运算符保留在运算符堆栈中。 当用户点击“计算”时,我将遍历操作符堆栈,并根据操作符优先级调整中缀树 我有抽象的节点类、值节点->节点、抽象运算符节点、AddNode->operatorNode、subtract节点->运算符节点等等 如
+
,-
,/
,*
)。我对运算符和操作数使用两个堆栈
当用户点击任何按钮操作数或运算符时,我尝试为当前表达式创建中缀树,并将运算符保留在运算符堆栈中。
当用户点击“计算”时,我将遍历操作符堆栈,并根据操作符优先级调整中缀树
我有抽象的节点
类、值节点
->节点
、抽象运算符节点、AddNode->operatorNode、subtract节点
->运算符节点
等等
如果上面的描述不清楚,我的代码是从下面的链接中得到启发的。
我的问题是,在不使用开关的情况下,如何基于堆栈中的运算符char创建正确的子类对象
因此,给定char(
+
或-
或*
或/
)我如何在不使用开关的情况下创建AddNode
或SubtractNode
您可以创建从操作员到创建正确实例的工厂的映射。这样你:1.避免开关
2.添加新操作数时,避免必须更新树创建,只需在映射中注册它们即可
映射中不存在的任何内容都可以假定为操作数(常量或变量)而不是描述代码,请将其发布。这将更容易理解和帮助你。格雷西亚斯,我的朋友。