我有一个任务,需要输出 Honda
或 BMW
或 Tesla
类的对象,所有这些都扩展了抽象类汽车
。输出应基于用户输入的输入,但代码的任何部分都不允许使用条件语句(if-else、switch-case、三元)。
输入选项为“日本”、“德国”和“美国”,应分别输出本田、宝马或特斯拉的对象。
我最初所做的是尝试使用三元运算符,但我被告知要重新设计它,因为三元运算符仍然被认为是有条件的。
hon = new Honda;
bmw = new BMW;
tes = new Tesla;
newH = hon->objectify();
newB = bmw->objectify();
newT = tes->objectify();
myCar = newH ?: newB ?: newT;
return myCar;
这就是我所做的,其中 objectify() 基本上是一个由每个子类以不同方式实现的抽象函数,如果输入不匹配则返回 null,如果输入匹配则返回其自身的对象。
此提交被拒绝。请问有什么更好的方法可以完成这项工作?
最佳答案
您可以使用用户输入的值来查找要实例化的类,并使用数组从一个类映射到另一个类。例如:
$carTypes = array("Germany" => "BMW", "Japan" => "Honda", "America" => "Tesla");
$country = "Germany"; //replace this with actual user input, in your version
$car = new $carTypes[$country]();
$car->objectify();
关于php - 在 PHP 中,如何在没有条件语句的情况下选择 3 个子类中的 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73825686/