关于通过反射的工厂设计模式
问题描述:
我正在做工厂模式R &我已经开发了下面的代码,现在我知道子类是狗和猫,但请告诉我如果我想要做同样的事情该怎么做在main.java传递类名通过反射实现关于通过反射的工厂设计模式
public abstract class Animal {
public abstract String makeSound();
}
public class Dog extends Animal {
@Override
public String makeSound() {
return "Woof";
}
}
public class Cat extends Animal {
@Override
public String makeSound() {
return "Meow";
}
}
public class AnimalFactory {
public Animal getAnimal(String type) {
if ("canine".equals(type)) {
return new Dog();
} else {
return new Cat();
}
}
}
public class Main {
public static void main(String[] args) {
AnimalFactory animalFactory = new AnimalFactory();
Animal a1 = animalFactory.getAnimal("feline");
System.out.println("a1 sound: " + a1.makeSound());
Animal a2 = animalFactory.getAnimal("canine");
System.out.println("a2 sound: " + a2.makeSound());
}
}
请告知其如何添加反射功能整合到它,这样我就不需要甚至决定的类型,只是把类名的主要java和该子类的对象被创建
答
为了使其工作,您的Cat
和Dog
类必须在自己的文件包your.package
和有默认的构造函数:
public class AnimalFactory {
public Animal getAnimal(String type) {
return (Animal) Class.forName("your.package." + type).newInstance();
}
}
嗨伙计,请告知该.. !! – dghtr