【发布时间】:2021-11-16 00:03:48
【问题描述】:
我已经用 Java 完成了我的第一个 OOP 项目。这是我大学课程的一个项目,它包含一个带有 GUI 的逻辑电路模拟器。它可以工作,但问题是创建新的不同组件是使用开关盒完成的,我的教授不希望我使用它。下面的代码在有人按下 GUI 上的“创建”按钮时运行。 “ComponenteLogico”类型是超类,“portaAND”、“portaOR”、“portaNAND”和company类都是“ComponenteLogico”的子类。我怎样才能避免开关盒? 对不起,如果我用了不好的英语
int inputs=jComboBox1.getSelectedIndex()+2;
ComponenteLogico comp=null;
if(jList1.getSelectedValue() == null)
{
System.out.println("Nessun componente creato");
System.out.println("prova1");
}//nel caso dell'aggiunta di una nuova classe bisogna aggiungere la voce corrispondente nello switch case sottostante
else switch (jList1.getSelectedValue()) {
case "AND":
{
comp= new portaAND(inputs);
break;
}
case "OR":
{
comp = new portaOR(inputs);
break;
}
case "NAND":
{
comp = new portaNAND(inputs);
break;
}
case "NOR":
{
comp = new portaNOR(inputs);
break;
}
【问题讨论】:
-
if和else if总是可以替换任何 switch 语句。但也要找一个更好的教授,因为你写的是正确的方法。 -
找一个更好的教授 - 或者了解教授的真正要求。
-
他说我要尝试找到更好的解决方案,因为这不尊重开闭原则
-
他是不是想让你用工厂来做这件事。如果这是关于开闭的,那么他可能会要求您使用工厂模式。
-
即使移动到某个模式,也不代表开关不好,只是开关在哪里。