我在一次采访中遇到了一个问题,我有两种食物,比如面包和蛋糕,得到的信息如下:
public class FoodFactory{};
public class Food{};
public static void main(String[] args) {
Food foo = FoodFactory.get("bread");
System.out.println(foo.getClass().getName());
}
考虑到 FoodFactory
类和 Food
类,我不确定如何完成这项工作,以便打印出“bread”
对于类(class)。看起来让它打印面包的唯一方法就是创建一个 Bread 类并让 FoodFactory 返回该类。
我只是想知道我是否遗漏了任何东西,因为 FoodFactory
和 Food
是给定的类,所以我认为这些是我需要更改的唯一两个类。有没有办法实现给定的两个类并使其在仅使用这两个类的情况下打印“bread”?
最佳答案
因此,一种方法是创建一个类 Bread
,它扩展类 Food
并让 FoodFactory.get()
返回基于传递的字符串的适当对象。
class Food {};
class Bread extends Food {};
class FoodFactory {
public static Food get(String type){
switch(type){
case "bread" : return new Bread();
default : return new Food();
}
}
}
另一种方法是使用反射。
关于Java工厂模式,创建特定的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37092854/