我有工厂模式的一个问题,当它与继承使用,工厂模式与继承
这是我的代码
public class Animal {
public int numberOfLegs() { return 2 ;}
}
public class Cat extends Animal {
public String getSound() {return "Maaaw";}
}
public class Dog extends Animal {
public String getSound() {return "woof";}
}
public class AnimalFactory {
public Animal getAnimal(String name){
Animal an= null ;
if(name=="cat"){an = new Cat();}
else if(name=="dog"){an=new Dog();}
return an ;
}
}
public class FactoryDemo {
public static void main(String[] args) {
AnimalFactory anmF=new AnimalFactory();
Animal anm=anmF.getAnimal("cat") ;
System.out.println("legs : "+anm.numberOfLegs()); // working fine
System.out.println("sound : "+anm.getSound()); // giving error
}
}
当我运行这一点,我不能去了getSound()
方法。它给出了一个错误。
这将工作正常,如果我将Animal
类定义为Abstract类,
但我想要如何处理Factory模式这样的情况。
它有助于知道你得到了什么错误。请把它包含在你的问题中。 –
如果您认为所有的动物都应该有声音,那么getSound()方法应该是Animal类的一部分。它与工厂模式没有任何关系。 –