Java 关于工厂设计模式

Java 关于工厂设计模式,java,design-patterns,Java,Design Patterns,我在做工厂模式的研发,我开发了以下代码,请告知它是否符合工厂模式的功能 public abstract class Animal { public abstract String makeSound(); } public class Dog extends Animal { @Override public String makeSound() { return "Woof"; } } public class Cat exten

我在做工厂模式的研发,我开发了以下代码,请告知它是否符合工厂模式的功能

    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());
    }

}

请告知它根据工厂模式的设计是正确的,我是否可以进一步改进它

如果您传入类名,您可以避免类型检查:

public class AnimalFactory {

    public Animal getAnimal(String className) throws Exception {
        Class animalClass = Class.forName(className);              
        return animalClass.newInstance();
    }

}

研发难道你不需要读GoF的书吗?看起来不错…我会调用工厂方法
createAnimal
,而不是
getAnimal
,因为它就是这样做的。@duffymo..你能不能像我上面所做的那样,用完整的代码来说明这一点,让理解更清楚, thanks@duffymo..please用完整的代码解释,因为在主类中也需要做一些更改。我确实给了你们完整的代码。把它弄明白。如果你不能在这个简单的例子中管理它,你就不应该写模式——或者Java,对这一点来说。是的,但是请在主文件中建议需要进行哪些更改。16个问题,你一个也不接受。为什么要有人来帮你?